新手:如何在TabView中刷新TabView单元格/触发viewWillAppear?

时间:2010-09-14 10:05:55

标签: iphone cocoa-touch uitableview

我是iPhone / ObjC编程的新手,虽然我有多年的编码经验,尤其是数据库开发。

我选择作为首次亮相的项目是一个小应用程序,旨在支持玩棋盘游戏,其中需要记录游戏块的状态。简而言之,我想用这个应用程序替换笔和纸。

到目前为止,我已经设置了一个带有TabBar的主窗口(4个标签,因为有4个播放器),每个标签都连接到一个ViewController(“FirstViewC”,“SeconcViewC”等),它再次设置了一个NavController 。然后NavController将TableViewController作为第一个子视图,当选择一个表项时,DetailViewController将作为子视图添加到NavController(在didSelectRowAtIndexPath中)。

此时,我有一个具有一些属性的对象(“PlayingPiece”),可以在DetailView中修改。

现在(最终)这是我的问题。

从DetailView返回(通过操作系统提供的NavBar中的“后退”按钮),从子视图堆栈(自动)弹出DetailView,并再次显示TableView。但由于某种原因,PlayPiece值的变化没有反映出来。当我将有问题的单元格从显示中滚出时,然后将其恢复,因为调用了新的单元格设置,所有内容都会显示出来。

显然,我需要触发某些“刷新”我显示的表格单元格(或者所有这些单元格,我们最多只讨论10个表项目,所以这里没有性能问题)。我想像[self.tableView reloadData]那样调用,但是在TableViewController中都没有调用“viewWillAppear”和“viewDidAppear”。

我不知道我的整个“控制器层次结构”是否存在错误,或者我错过了某种我忘记设置的委托。我保证,我之前在论坛中扫描了几个主题,但我找不到任何讨论可以帮助我进一步解决这个问题。

如果有人对此有任何建议,我们非常感谢任何帮助 - 它让我疯狂;-)我正在使用最新的SDK。

马库斯

2 个答案:

答案 0 :(得分:0)

如果您正在使用UINavigationController来推送和弹出视图控制器,那么您可能需要查看(UINavigationControllerDelegate):

- navigationController:willShowViewController:animated:

- navigationController:didShowViewController:animated:

答案 1 :(得分:0)

我最终想(在一些外部帮助下)控制器设置的结构有些混乱。

抛出一个“图层”后,viewWillAppear按预期工作。

感谢您的建议 - 我非常感谢您的支持!

马库斯