我是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。
马库斯
答案 0 :(得分:0)
如果您正在使用UINavigationController来推送和弹出视图控制器,那么您可能需要查看(UINavigationControllerDelegate):
- navigationController:willShowViewController:animated:
- navigationController:didShowViewController:animated:
答案 1 :(得分:0)
我最终想(在一些外部帮助下)控制器设置的结构有些混乱。
抛出一个“图层”后,viewWillAppear按预期工作。
感谢您的建议 - 我非常感谢您的支持!
马库斯