【发布时间】:2016-08-12 12:54:37
【问题描述】:
问题:
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 的原因。委托是否重置视图?
谢谢
【问题讨论】:
-
你到底想要什么?无法正确理解问题?
-
我希望委托方法显示正确的 viewController,而不是每次收到委托消息时都调用 viewDidLoad 方法。 viewDidLoad 将 selectedIndex 重置为 0。
标签: ios objective-c delegates uitabbarcontroller