【问题标题】:Problem reloading UITableView重新加载 UITableView 的问题
【发布时间】:2009-05-17 09:03:22
【问题描述】:

我有一个由数组填充的 UITableView,我在导航栏上有一个按钮(按下时)将一个项目添加到数组并在 UITableView 中调用 [self.tableView reloadData]。这导致 numberOfRowsInSection 被调用并返回正确的行数(数组中的项目数)但不调用 cellForRowAtIndexPath。 我创建了一个新的基于导航的应用程序来尝试找到解决方案,但遇到了完全相同的问题! 如果有人知道答案,将不胜感激,我最后一天一直在扯掉我剩下的头发! 我已将测试项目的源代码放在我的网站 www.sofarcing.com/Downloads/Test3.zip

【问题讨论】:

  • 我应该补充一点,如果我在表格前面弹出一个模态视图,更新数组并调用 reloadData,然后删除模态视图,那么它工作得非常好!为什么表格视图可见时我无法获得此行为?

标签: iphone


【解决方案1】:

为我工作! ;)

在 MainWindow.xib 中,您添加了一个对象根视图控制器(它不是导航控制器的一部分) - 删除它,没有必要。然后将outlet refreshFriendsList 连接到RootViewController 的NavigationItem 的Bar Button。哇啦,魔法!

顺便说一句:您可能需要清除警告。您可能需要考虑为您的数据模型创建一个类,而不是使用 UIApplication sharedApplication。

【讨论】:

  • 好的,我已经从 MainWindow.xib 的 NavigationController 中删除了 RootViewController,但我不明白如何在没有那个的情况下将条形按钮连接到 IBAction...?
  • 忽略我的评论,我明白了!非常感谢!
【解决方案2】:

我很快调试了您的测试应用。我找不到根本原因,但由于 Interface Builder 设置中的一些混乱,您似乎有两个不同的表视图。

如果您使用项目初始化原始数组,则正确调用 cellForRowAtIndexPath。如果您在此调用中检查 self.tableView 实例,然后在随后的 refreshFriendsList 调用中检查,self.tableView 指向不同的实例。

2009-05-17 14:33:07.591 Test3[33580:20b] cellForRowAtIndexPath 0
2009-05-17 14:33:07.594 Test3[33580:20b] self.tableView: <UITableView: 0x52b9b0>
2009-05-17 14:42:36.810 Test3[33762:20b] numberOfRowsInSection: tableView <UITableView: 0x53bcd0> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2012-08-01
    相关资源
    最近更新 更多