我设计了一个基本上有一个tableview的应用程序有一个rootView,然后根据在根视图控制器上单击的行加载三个控制器(2个tableviews和1个视图控制器)。我已经从根视图控制器向所有三个视图添加了当前模态segue。但是观点没有被加载。我没有在视图之间传递任何数据。只加载视图。我尝试加载视图的代码是
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
NSLog("It did enter the didselectRowAtIndexPath")
if (indexPath.section == 0){
func prepareForSegue(segue : UIStoryboardSegue , sender : AnyObject?) {
segue.destinationViewController as? DetailsViewController
NSLog("Loading Details view controller")
}
}
if (indexPath.section == 1){
func prepareForSegue(segue : UIStoryboardSegue , sender : AnyObject?) {
segue.destinationViewController as? AppCatalogViewController
NSLog("Loading AppCatalog view controller")
}
}
if (indexPath.section == 2){
func prepareForSegue(segue : UIStoryboardSegue , sender : AnyObject?) {
segue.destinationViewController as? supportViewController
NSLog("Loading support view controller")
}
}
}
注意:"它确实输入了didSelectRowAtindexPath"打印在日志中。!
任何人都可以指导我应该做什么?提前谢谢..
答案 0 :(得分:0)
使用performSegueWithIdentifier:而不是prepareForSegue,prepareForSegue在执行segue之前执行,并且用于显示视图控制器的某些设置。
答案 1 :(得分:0)
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
NSLog("It did enter the didselectRowAtIndexPath")
if (indexPath.section == 0){
self.performSegueWithIdentifier("IdentifierName", sender: sender)
} else if (indexPath.section == 1){
self.performSegueWithIdentifier("IdentifierName", sender: sender)
} else if (indexPath.section == 2){
self.performSegueWithIdentifier("IdentifierName", sender: sender)
}
}
在UIViewController类中定义prepareForSegue,此方法的默认实现什么都不做。并且它要求所有segues。 如果你愿意,你可以覆盖它。