仍然迅速采取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}" 。在连接检查器中,我不得不拖动出口:委托 - >到视图控制器
答案 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.
}