如何重新加载用xib制作的表中的数据

Posted

技术标签:

【中文标题】如何重新加载用xib制作的表中的数据【英文标题】:How to reload data in a table made in xib 【发布时间】:2011-03-28 03:50:49 【问题描述】:

[myTable reloadData] 不起作用,[myTable deselectRowAtIndexPath:indexPath animated:YES];

我之前对 UITableViewController 进行了子类化,这两个函数都在其中起作用。然后,我将我的类更改为带有委托的 UIViewController 子类,以便我可以使用 xib。从那时起,这些功能停止工作。

我已将其设置为通过单击按钮触发 reloadData。多次运行调试器表明表方法甚至没有被 reloadData 触发,尽管表加载良好(在单击按钮之前)。委托源和委托被设置为文件的所有者,所以这一切都很好。

非常感谢。

【问题讨论】:

找到这个结果:[(UITableView*)self.view reloadData];但它会在几次加载后导致崩溃 这是因为您的视图不再是 UITableView,因为您不再继承 UITableViewController。如果有帮助,我可以在下面扩展我的答案来解释这一点。 【参考方案1】:

我的猜测是您没有将插座设置为 myTable。这可以解释为什么数据源和委托工作,而不是重新加载数据的调用。

假设这是您在@interface 中需要以下内容的问题:

@property (nonatomic, retain) IBOutlet UITableView *myTable;

和一个实例变量UITableView *myTable。那么你的实现中需要@synthesize myTable;

然后您需要使用界面构建器将您的表格视图分配给此插座,方法是从文件所有者 > 连接选项卡中的 myTable 条目拖动到布局中的表格视图。

假设这是问题所在,您现在可以在表格视图上调用诸如 reloadData 之类的方法。

【讨论】:

嗨梅森,感谢您的回答。这似乎不影响事情。我确实已经在 IB 中连接了所有内容,但没有在 myTable 上使用保留(我看到的示例代码没有使用保留或合成),但我现在将所有这些都放入尝试。不幸的是仍然响应相同 - 代码命中 [myTable reloadData] 但这不会调用表函数,基本上没有任何反应:它没有进入表代码块。 有趣。你能做 NSLog(@"%@", myTable) 并检查它不是 nil 吗? 是的,你是对的 - 它是空的。好想试试。我应该如何处理?到目前为止,我在 mytable 上有一个保留、合成、IBOutlet UITableView。我的接口声明是:@interface TableView : UIViewController 。我的 tableview 在 IB 中作为 Datasourse、Delegate 和 myTable 连接到文件的所有者。所以我确定我应该修补什么。再次感谢您的帮助。 我的猜测是 xib 没有被使用,但文件的所有者身份与我的类 - TableView 相关联。所以不要去那里。 听起来令人沮丧!您可以通过在某处放置(例如)一个大按钮并查看在您运行应用程序时是否在屏幕上呈现来测试是否正在使用 XIB。如果您想将课程或项目上传到某个地方,我可以看看。

以上是关于如何重新加载用xib制作的表中的数据的主要内容,如果未能解决你的问题,请参考以下文章

页面重新加载后如何保持在反应(antd)表中的同一页面

加载/重新加载 xib uiview

如何在 TableView 中重新加载数据

如何在 NSViewController 中重新加载数据?

如何将多个 .xib 重新用作另一个 .xib 的模板?

如何通过 CoreData 在数据库表中重新加载对象数组