应用程序显示有关行星,其卫星等的信息。它显示了行星列表,让用户选择一个行星并查看其详细信息,然后将其添加为书签/未书签标记。我有一个视图向用户显示所选行星的详细信息,它还包含一个添加/删除书签按钮。如果用户单击该按钮,则将添加/删除该书签,并将其他视图按在当前视图的顶部,以告诉用户书签已删除。

现在的问题是,当用户单击状态视图上显示的导航栏左侧的背面/行星详细信息按钮时,他回到了星球的详细信息视图时,他仍然显示添加/删除(前面显示的以前显示),而它则显示现在应根据我编写的代码删除/添加(根据先前加载的按钮)。

我能理解的是,当用户单击该后按钮时,上一个视图未重新加载,状态视图就会弹出。有什么方法可以使应用程序运行setneedsdisplay或在用户单击状态视图上的“返回”按钮时可以重新加载书签详细信息查看didload代码的东西?

还是还有其他解决方案?

当用户认为他只是删除/添加了书签时,这对用户非常困惑,但按钮仍在要求他添加/删除...

该状态视图也由代码的其他部分使用来向操作的用户显示结果,以便我不能更改其代码,或者我可以检查其中的先前视图,检查它是否是行星详细信息,然后检查重新加载其内容...

有帮助吗?

解决方案

采用在ViewDidload方法中设置按钮的代码,然后将其移至ViewWillAppear中。重新输入视图时,它应该正确更新按钮。

其他提示

我找到了一个解决方案:应该在ViewWillapear中编写此类代码(在PopviewController或此类事件之后进行更改),以使其每次加载视图时都会运行。

感谢#iphonedev上的Quentarez和Crackity_jones,在irc.freenode.net上。

设置正确的委托

- (void)navigationController:(UINavigationController *)navigationController
                 willShowViewController:(UIViewController *)viewController
                 animated:(BOOL)animated
{
    NSLog(@"navigationController willShowViewController");
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top