重新加载并显示基于主故事板中的视图的表视图

Posted

技术标签:

【中文标题】重新加载并显示基于主故事板中的视图的表视图【英文标题】:Reload and display a tableView whitch is based on a view in the MainStoryboard 【发布时间】:2012-05-24 07:47:36 【问题描述】:

我从上周开始就在寻找鞋面的解决方案,但我在互联网上没有找到解决方案。所以我想我会在这里得到帮助。

现在可能会提出问题:我有一个 MainStoryboard,其中有一个带有 View 的 ViewController。在那个视图上,我放了一个 tableView。 ViewController.h

IBOutlet UITableView *tableView
//on bottom
@property (nonatomic, retain) UITableView *tableView;

ViewController.m 我已经合成了它,现在我想在显示视图时重新加载并显示它。 我测试了以下没有结果的东西:[tableView reloadData]; [self.tableView reloadData]; [self.tableView setNeedsDisplay]; 如果我使用[self.view setNeedsDisplay];,则会出现以下错误:

由于未捕获的异常“NSInternatlInconsistencyExeption”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle <...>(已加载)”,名称为“ViewController”*调用堆栈:(...)终止调用抛出异常(lldb)

没错,没有NIB文件,因为我使用了Storyboard。有没有人有想法?

我唯一发现的是,如果我通过 Storyboard 中视图上的按钮重新加载视图,tableView 会重新加载 - 完全重新加载 - 但这不是解决方案。

我可以在-(void)prepareForSegue:(UIStoryboard *)segue sender:(id)sender 做点什么吗?到目前为止,我只用于弹出框的那个方法。

【问题讨论】:

【参考方案1】:

您是否真的在 Interface Builder 中连接了 IBOutlet?

Xcode 应该告诉你它是否连接:它会在你的头文件的边缘显示一个小圆圈,如果那个圆圈里面有一个点,它就是连接的,如果没有,那么它不是。

要在 Interface Builder 中连接插座,请从带有插座的事物(即您的视图控制器)右键拖动到您想要将其连接到的事物(您的表),当您松开它时,它会给您一个菜单可供选择的网点。

【讨论】:

您好 Amy Worrall,感谢您的快速答复!是的,我做到了。 还有其他想法吗?我曾想过回到 *.xib 而不是情节提要,但这会很伤心;( 几个问题:您的表格视图是新的 Storyboard 静态表格视图之一,还是传统的动态表格视图?如果是后者,您是否已连接数据源和委托? 设置为“内容:动态原型”。是的,我已将委托连接到数据源。它已经在显示内容。但它只在启动应用程序时刷新。

以上是关于重新加载并显示基于主故事板中的视图的表视图的主要内容,如果未能解决你的问题,请参考以下文章

故事板中的自定义 UIView 不显示子视图

故事板中的重叠视图

有条件地从 AppDelegate 故事板中的不同位置开始

故事板中的PresentModalViewController以编程方式iOS 5

故事板中的自定义导航控制器

故事板中的 Segues 问题