iOS - “来自故事板“Main”的 UIViewController,但没有得到 UITableView
Posted
技术标签:
【中文标题】iOS - “来自故事板“Main”的 UIViewController,但没有得到 UITableView【英文标题】:iOS - "UIViewController from storyboard "Main", but didn't get a UITableView 【发布时间】:2016-10-13 14:39:08 【问题描述】:我有一个 UIViewController,里面有 UITableView。一切正常。在“didSelectRowAtIndexPath”方法中,我想激活 UIViewController 的“显示”segue。我在 Storyboard 中设置它,创建它的 ViewController 类等。
当我选择单元格时,我收到一条错误消息:
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:'-[UITableViewController loadView] 具有标识符的实例化视图控制器 来自故事板“Main”的“UIViewController-ndM-tm-7SM”,但没有得到 UITableView。'
有趣的是,我发现虽然我把一个 ViewController 放到了 storyboard 上,但是它自己变成了 Table View Controller。图片:
这不是初始情况,起初我检查了同一个地方,只有 ViewController。可能这就是问题所在。
我看过之前问过的同一个问题,但它们不同。我的根视图控制器不是表视图控制器,它是包含表视图的视图控制器。
无论如何,我应该怎么做呢?我也使用 prepareForSegue 方法,似乎没有什么问题。
谢谢!
【问题讨论】:
你有没有设置任何从单元到另一个 vc 的 segue ? 所以您将 UITableView 拖放到 UIViewController 对吗?您是否将 tableView 的委托和数据源连接到文件的所有者? @vaibhav 我已经设置了从视图控制器到另一个 vc 的 segue。我应该从单元格中制作它吗? @GellertLee 如果您要我的根视图控制器,它的委托方法可以正常工作。 @narsimelus 检查我的答案,是的,您可以使用自定义单元格连接 segue。 【参考方案1】:你当然可以创建一个从一个 VC 到另一个 VC 的 segue,并从 didSelectRowAtIndexpath
调用它
我尝试创建从rootViewController
(不是单元格)到detailViewController
的segue,它工作正常。
首先,确保您已在 storyboard 中连接了 dataSource 和 delegate。
然后连接segue,
然后在你的didSelectRowAtIndexPath
方法中:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[self performSegueWithIdentifier:@"show" sender:[tableView cellForRowAtIndexPath:indexPath]];
这应该可以工作。
【讨论】:
我一开始也是这么想的,但结果出了问题。由于它带来了错误,我尝试了不同的东西,它变得不必要地复杂了:)【参考方案2】:你必须继承 UITableViewController 而不是 UIViewController
这样写你的 .h 文件
@interface ViewController : UITableViewController
//your property & method add here
@end
【讨论】:
user176196 可以使用UIViewController
:) 实现以上是关于iOS - “来自故事板“Main”的 UIViewController,但没有得到 UITableView的主要内容,如果未能解决你的问题,请参考以下文章