问题:
UITabBarController委托方法调用viewDidLoad并取消/忽略屏幕选择。
背景:
我正在为小型iOS屏幕制作分割视图控制器。所以,屏幕看起来像这样:
对于详细视图(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的原因。代表是否重置了视图?
由于
答案 0 :(得分:0)
是的,viewdidload
每次都会调用,因为您再次初始化标签。 setSelectedIndex
从UITabbarcontroller类初始化tabbarcontroller
evrytime。你不应该从uitabbarcontroller
课那样做。只是初始化tabbarcontroller onece。
您不应该像这样使用tabbarcontroller
。根据您的要求,您不需要使用tabbar,只需在按钮点击时显示viewController
。