我有一个问题 UITableViewController 在删除子视图后无法重绘更新的单元格。
这是发生了什么。在子视图中更改数据后,父视图控制器重新加载源数据阵列并通过PostNotification运行 [tableView reloadData] 。在此触发之后,我使用 popViewControllerAnimated 返回到父UITableViewController(这会将子视图弹出堆栈,并将控制器显示一级)。
但是,我的更新数据没有出现在父视图控制器中!根据调试器,单元格的标签已更新,但可见标签不会更改。但是,如果我滚动表格,暂时将更新的单元格移出视图,当它再次出现时标签会更新!
我也尝试通过 viewWillAppear 调用 [tableView reloadData] ,但问题仍然存在。
以下是一些可能有用的其他信息。我有3个这样的结构:
1/ SettingsViewController : UITableViewController
2/ -- UserView : UITableViewController
3/ ---- UserDetailsView : UIViewController <UIActionSheetDelegate>
我从UserView内部调用UserDetailsView,如下所示:
UserDetailsView *userDetailsView = [[UserDetailsView alloc] init];
[self.navigationController pushViewController:userDetailsView animated:YES];
如果我返回到最顶层的控制器(SettingsViewController),然后加载有问题的控制器(UserView),一切都被正确绘制。只有从子视图返回时才会发生此问题。
提前感谢您的建议。
答案 0 :(得分:0)
经过大约一个小时的配对编码后,最后才解决了这个问题。
过了一会儿,每当我们发送reloadData消息时,我们都注意到 tableView始终为null 。 正如您在Objective C中所知,null对象接受任何没有抱怨的消息。
事实证明,“某人”(咳咳,抱歉是我)已经在头文件中定义了这一行。
UITableView *tableView;
现在你的智能cookie会知道,因为我们扩展了UITaleViewController,我们不需要自己创建一个指向tableView的指针。实际上,我已经用null对象替换了继承的tableView成员。
神秘解决了。希望这也可以帮助其他人! :d