Swift / iOs:如何链接动态添加的表格单元格?

时间:2015-09-07 09:30:47

标签: ios swift tableviewcell

仍然迅速采取babysteps。

使用静态tableview我只需按住Ctrl键并将表格单元格拖动到右侧导航控制器,即可显示选择视图/场景。

但是,如果我使用表格视图和#34;动态原型"?我这样填写了表格视图

 let testMenu = [

        (“menuItem 1"),
        ("menuItem test"),
        (“afd"),
        (“test"),
        (“barca"),
        (“london")

    ]

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
       return 1
    }

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return testMenu.count
    }

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

        let cell = UITableViewCell()
        let (menuItem) = testMenu[indexPath.row]
        cell.textLabel?.text = menuItem

        return cell

    }

这将按预期显示菜单项。但是将每个表格单元链接到正确的导航控制器对我来说并不清楚。看一些教程,我想我需要使用didSelectRowAtIndexPath,但尝试以下没有打印任何东西,我不知道如何创建链接,segue?

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    //CODE TO BE RUN ON CELL TOUCH
    //need to go to the right navigation controller

    print("clicked: \(indexPath)")
}

和班级

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

编辑1:我能够打印"点击:{length = 2,path = 0 - 1}" 。在连接检查器中,我不得不拖动出口:委托 - >到视图控制器

1 个答案:

答案 0 :(得分:0)

您应该使用didSelectRowAtIndexPath在当前View Controller的导航控制器中推送右侧View Controller。

(对于您的信息,每个View Controller都有一个内置的navigationController)

使用该方法,navigationController类的pushViewController()可以在当前视图控制器的navigationController中推送任何View Controller,然后进一步处理视图应该在推送的视图控制器中完成。

如果您希望推送的视图控制器知道当前View Controller的表View的indexPath,只需创建推送的View控制器,即具有NSIndexPath类型属性的自定义视图Controller。

在初始化您要推入的rightViewController对象期间,初始化didSelectRowAtIndexPath()中的属性。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    //Before doing this, import the custom view controller that you want to push inside your navigation controller
 //1. Create the object of CustomRightViewController which is a subclass of UIViewController
 let rightViewController = CustomRightViewController();

 //2. Set its myIndexPath property to selected index path , but before doing this, you must declare the myIndexPath property in your CustomRightViewController.swift file 
 rightViewController.myIndexPath = indexPath; 

 //3. Now you can push this Custom View Controller in your current View Controller's navigationController
 self.navigationController?.pushViewController(rightViewController, animated: true);

 //4. After this you can program the Custom View Controller accordingly, with the indexPath or any other object if you want to use from the current/initial View Controller.   

}