自定义iOS UITabBarController委托触发器viewDidLoad

时间:2016-04-20 04:19:51

标签: ios objective-c delegates uitabbarcontroller

问题:

UITabBarController委托方法调用viewDidLoad并取消/忽略屏幕选择。

背景:

我正在为小型iOS屏幕制作分割视图控制器。所以,屏幕看起来像这样:

Custom Split-View Controller

对于详细视图(RS),我正在使用UITabBarController,删除了TabBar。您可以找到此here的代码。

用户选择左侧的按钮,委托将按钮的标签ID发送到UITabBarController委托方法。

委托方法如下所示:

// delegate method in subclass of UITabBarController
-(void) screenSelected:(int)screenNum
{
    NSLog(@"delegate arrived: %d", screenNum);
    self.selectedIndex = screenNum;
    // code goes to viewDidLoad
}

有了断点,我确定屏幕实际上没有改变。

如果从UITabBarController viewDidLoad方法调用此screenSelected方法(当应用程序首次打开时),该方法正常工作,并且selectedIndex按预期更改。

我正在试图找出委托触发viewDidLoad的原因。代表是否重置了视图?

由于

1 个答案:

答案 0 :(得分:0)

是的,viewdidload每次都会调用,因为您再次初始化标签。 setSelectedIndex从UITabbarcontroller类初始化tabbarcontroller evrytime。你不应该从uitabbarcontroller课那样做。只是初始化tabbarcontroller onece。

您不应该像这样使用tabbarcontroller。根据您的要求,您不需要使用tabbar,只需在按钮点击时显示viewController

希望这会奏效。