我有一个表视图控制器,通过单击单元格我将用户重定向到详细视图控制器。但是当我执行segue“当前视图控制器”时它工作正常。但我需要的是什么?
我需要通过单击表格视图来执行push segue。如何做?
这是我的代码:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc: BusinessDetailViewController = storyboard.instantiateViewControllerWithIdentifier("BusinessDetailViewController") as! BusinessDetailViewController
vc.BusinessData = arrDict[indexPath.row]
self.presentViewController(vc, animated: true, completion: nil)
}
我在下面尝试了这个:
self.navigationController?.pushViewController(vc, animated: true)
但它不起作用。任何解决方案请!!
答案 0 :(得分:9)
首先,您的UITableViewController
必须有UINavigationController
要快速将其从xCode菜单
嵌入到您的表中然后,您必须创建segue,从UITableViewController
按住Ctrl键拖动到目标viewController:
然后选择segue并在属性检查器中为其指定一个标识符:
现在您可以在代码中执行此segue:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(indexPath)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("mySegue", sender: cell)
}
答案 1 :(得分:3)
如果您没有使用UINavigationController
,请在segue
中将storyboard
从表格单元格添加到目标viewController
,并将identifier
提供给segue
}。
然后在单元格上单击调用
- performSegueWithIdentifier:sender:
并实施
- prepareForSegue:sender:
答案 2 :(得分:0)
如果没有导航控制器,则无法推动控制器。您的self.navigationController
媒体资源为nil
(您可以查看)
如何解决?
答:您需要通过代码或故事板
将视图控制器嵌入导航控制器中答案 3 :(得分:0)
试试这段代码,它为我工作,
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewControllerWithIdentifier("PlayViewController") as! PlayViewController
self.navigationController?.pushViewController(controller, animated: true)
}
并设置故事板ID,如下所示,
希望它有用