2015-09-07 130 views
0

仍在迅速采取babysteps。Swift/iOs:如何链接动态添加的表格单元格?

对于静态的tableview我只是CTRL +拖动表格单元向右导航控制器和选择视图显示/场景。

但是,如果我使用了“动态原型”表视图我如何能做到这一点?我像这样填充表格视图

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 { 

EDIT 1:我能够打印 “被点击:{长度= 2,路径= 0 - 1}”。在连接检查器中,我必须拖动网点:代理 - >到视图控制器

回答

0

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

(对于您的信息,每个视图控制器有一个内置navigationController)

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

如果你想推视图控制器知道当前视图控制器的表视图的indexPath,只是使推视图控制器,具有类型NSIndexPath的属性自定义视图控制器。

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. 

} 
+0

你能提供一些虚拟代码? – alex

+0

我没有太多熟悉的快捷,我是一个客观的C语言开发,还是等待一段时间,我会揣摩...... –

+0

你可以看到上面的代码,如果你发现任何更多的困难,PLZ在这里评论 –

相关问题