ios - self.tableView.delegate=سيلف سويفت




swift uitableview (2)

إذا كان لدي إيفيوكونترولر وأنا ربط تابلفيو إلى ذلك في القصة المصورة، وربط منفذ تابلفيو، ثم قم بتوصيل مصدر البيانات وطرق التفويض عبر مفتش الاتصالات (نترل + اسحب إلى فك رمز دائرة البرتقال)، لا يزال هناك حاجة لإضافة self.tableView.delegate = الذاتي إلى وحدة تحكم عرض الفعلي؟ بالطبع في فك الفعلي أنا تنفيذ تابلفيو البيانات / مندوب بروتوكولات.

أيضا أنا أفترض أيا كان الجواب هو نفسه سيذهب لوحدة تحكم عرض المجموعة التي يتم توصيلها عن طريق القصة المصورة بنفس الطريقة؟

ما هي إيجابيات وسلبيات إضافته؟

class FooController:UIViewController, UITableViewDataSource, UITableViewDelegate{


@IBOutlet weak var tableView: UITableView!


override func viewDidLoad() {
      super.viewDidLoad()
      self.tableView.delegate = self
   }


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
{


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
{
    }

هل ما زلت بحاجة إلى إضافة self.tableView.delegate = النفس إلى وحدة تحكم عرض الفعلي؟

أنت تفعل ذلك من خلال إجراء الاتصال في لوحة العمل. أنها بالضبط نفس الشيء: تعيين إلى الملكية delegate ، أعرب بطريقتين مختلفتين (واحد في التعليمات البرمجية، واحد "بيانيا" في واجهة منشئ). تحتاج فقط للقيام واحد منهم.

ولكن إذا كان جهاز تحكم وجهة نظر وحدة تحكم عرض الجدول (إيتابيفيوكونترولر الفئة الفرعية)، ثم سوف تفعل لا ، لأن وحدة تحكم عرض الجدول هو بالفعل مصدر بيانات عرض الجدول والمفوض. وينطبق الشيء نفسه على وحدة تحكم عرض مجموعة (إيكولكتيونفيوكونترولر الفئة الفرعية). هو بالفعل مصدر بيانات عرض المجموعة والمندوب.


أنا أتفق مع كل من مات و كوانغ الإجابة ولكن في بعض الأحيان نحن بحاجة إلى إعادة استخدام نفس تابلفيو ومندوب ومصدر البيانات في فئة فيوكونترولر أخرى في ذلك الوقت اتصال مع منفذ ل داتاسورس والمندوب قد لا يكون العمل الذي قد لا يتم استدعاء طرق المفوضين.

مثال -

لدي فيوكونترولر (فئة A) مع tableview.i تحتاج إلى إعادة استخدام هذا المراقب كامل وجهة نظر إلى فئة أخرى (فئة B)

A.view.addSubview (B.view)

لذلك في هذه الحالة يجب أن تحتاج إلى كتابة الرموز أدناه

Class A:UIViewController, UITableViewDataSource, UITableViewDelegate{


@IBOutlet weak var tableView: UITableView!


override func viewDidLoad() {
      super.viewDidLoad()
      self.tableView.delegate = self
      self.tableView.datasource = self 
   }


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
{


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  }




uicollectionview