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的主要内容,如果未能解决你的问题,请参考以下文章

iOS 添加视图:来自故事板的广告视图,无限制

来自故事板的自定义 UIButton

来自故事板的原型单元不创建 UILabel 等

来自故事板的 UITableView - 使用 UITableViewStyleGrouped 初始化

来自故事板的表格视图单元原型未初始化子视图

ios中的自动旋转问题