gpt4 book ai didi

objective-c - NSNotification 或 Delegate 以在可见 View 更改时进行注册

转载 作者:可可西里 更新时间:2023-11-01 04:54:00 26 4
gpt4 key购买 nike

我正在为 ios 在 objective-c 中开发一个项目,我有一个使用 UITabBarController 子类的带有多个选项卡的 View 。每个选项卡都有自己的 UINavigationController。当在选项卡上加载 View 时,会触发相应的激活事件(viewWillAppear、viewDidLoad 等)。但是,一旦您点击不同的选项卡并返回,并非所有这些事件都会再次触发,因为该 View 已经是该特定选项卡的可见 View (例如 viewDidLoad)。

我的问题是:是否有一个通知或委托(delegate),我可以简单地注册并在窗口中的可见 View 发生变化时得到通知?我做了一些研究,但没有找到任何具体的内容。我打算做的是:

  1. 当标签栏索引改变时检查可见 View :tabBarController:didSelectViewController
  2. 在每个导航 Controller 上注册此事件:navigationController:didShowViewController:animated:

通过这样做,每当 visibleViewController 通过更改选项卡或在选项卡的导航流中导航而发生更改时,我应该会收到通知(模态除外,在这种情况下,我不关心它们。它们已经处理过了) .

这是正确的方法吗?

最佳答案

你看过 UITabBarControllerDelegate 了吗?这个方法听起来就是你要找的:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

来自文档:

In iOS v3.0 and later, the tab bar controller calls this method regardless 
of whether the selected view controller changed. In addition, it is called only
in response to user taps in the tab bar and is not called when your code
changes the tab bar contents programmatically.

这是链接:http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html

希望对您有所帮助!

关于objective-c - NSNotification 或 Delegate 以在可见 View 更改时进行注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13165459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com