UITableViewController在popViewControllerAnimated之后不重绘新的单元格文本标签

时间:2010-02-03 03:37:49

标签: iphone uitableview pushviewcontroller popviewcontroller

我有一个问题 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),一切都被正确绘制。只有从子视图返回时才会发生此问题。

提前感谢您的建议。

1 个答案:

答案 0 :(得分:0)

经过大约一个小时的配对编码后,最后才解决了这个问题。

过了一会儿,每当我们发送reloadData消息时,我们都注意到 tableView始终为null 。 正如您在Objective C中所知,null对象接受任何没有抱怨的消息。

事实证明,“某人”(咳咳,抱歉是我)已经在头文件中定义了这一行。

 UITableView *tableView;

现在你的智能cookie会知道,因为我们扩展了UITaleViewController,我们不需要自己创建一个指向tableView的指针。实际上,我已经用null对象替换了继承的tableView成员。

神秘解决了。希望这也可以帮助其他人! :d