2017-07-27 27 views
0

Comparison : left TableViewController : not Working ; right ViewController : workingIOS夫特:TableViewController与内TableView中在静态细胞

我有在左控制器内的tableView一个problème: 由于左控制器与静态细胞TableViewController它不能执行的UITableViewDelegate ,UITableViewDataSource协议,所以我不能使用TableViewController类作为内部tableView的委托。

我创建了一个类(InnerTVDelegate),充当内部tableView的委托,我将tableView委托/数据源设置为InnerTVDelegate的一个实例,但它不起作用。

这里是我的课:

进口的UIKit

类MyTableViewController:{的UITableViewController

@IBOutlet weak var innerTableView: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    innerTableView.delegate = InnerTVDelegate() 
    innerTableView.dataSource = InnerTVDelegate() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

类InnerTVDelegate:NSObject的,的UITableViewDelegate,UITableViewDataSource {

var items: [String] = ["We", "Heart", "Swift"] 


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return self.items.count; 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "InnerTVTableViewCell") as! InnerTVTableViewCell 

    cell.mytextLabel?.text = self.items[indexPath.row] 

    return cell 
} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    print("You selected cell #\(indexPath.row)!") 
} 

}

这是什么问题?

感谢

回答

0

试试这个

@IBOutlet weak var innerTableView: UITableView! 
    var tvDelegate:InnerTVDelegate()! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     tvDelegate = InnerTVDelegate() 
     innerTableView.delegate = tvDelegate 
     innerTableView.dataSource = tvDelegate 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
+0

谢谢,它的工作原理:) 你能解释我为什么 你刚才宣布tvDelegate作为实例变量。 是因为我使用了2个不同的实例作为delagate和dataSource吗? – tutanck

+0

编号InnerTVDelegate()返回一个自动释放对象。它只是获得释放。 – Torongo

相关问题