【问题标题】:iPHone - Detect UITabBarController delegate methods?iPHone - 检测 UITabBarController 委托方法?
【发布时间】:2011-04-28 20:22:04
【问题描述】:

我想在 UITabbarViewController 完全加载并显示在屏幕上时收到通知?

由于它是从 UIViewController 继承的,我尝试将代理设置为我的 appdelegate 并实现了 viewDidAppear,但它从未被调用过。

有什么办法吗??

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
   self.tabbar.delegate = self;
   //other stuff
}

- (void)viewDidAppear:(BOOL)animated
{
    NSLog(@"asdasd");
}

【问题讨论】:

  • 你想完成什么?

标签: iphone objective-c delegates uiviewcontroller uitabbarcontroller


【解决方案1】:

当您设置 UITabBarController 的委托时,您将只能覆盖 UITabBarControllerDelegate 方法,而不能覆盖 UITabBarController 方法。

解决方案:A

从代码创建 UITabBarController

解决方案:B

子类 UITabBarController

对于这两种解决方案,您都可以在 viewDidLoad 中编写代码,或者发送带有视图已完全加载信息的 NSNotification。

【讨论】:

    【解决方案2】:

    我认为这不是一个非常优雅的解决方案,但您可以使用 NSNotificationCenter 发布通知

    [[NSNotificationCenter defaultCenter] postNotificationName:myNotification object:self];
    

    并回复如下:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dosomething:) name:myNotification object:nil];
    

    【讨论】:

    • 这如何告诉我标签栏何时加载?
    【解决方案3】:

    使用继承自 UIViewController 的 UITabBarController 的 viewDidAppear。控制器负责视图的生命周期,而不是委托。

    【讨论】:

    • 您能否提供更多详细信息,UITabBarController 似乎不包含任何 UITabViewController。
    • 当然,UITabBarController 是 UIViewController 的子类。这意味着您可以访问 UIViewController 的方法,包括 viewDidLoad:、viewDidAppear: 等。根据您使用 UITabBarController 的方式,您应该能够覆盖相关方法来完成您的任务。
    猜你喜欢
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多