这应该是这么简单......但有些棘手的事情正在发生。iPhone:selectedIndex值的选项卡应该是一致的,但不是
我的设置是这样的:
MainViewController
Tab Bar Controller
4 tabs, each of which loads WebViewController
我的AppDelegate包含实例变量,tabBarController,其被连接到标签栏控制器(这是所有设置在界面生成器)。 IB中最左边的选项卡标记为“选中”。
在WebViewController的viewWillAppear方法中,我需要知道刚选择了哪个选项卡,以便加载正确的URL。我通过切换appDelegate.tabBarController.selectedIndex来做到这一点。
当应用第一次运行并且最左边的选项卡被选中时,selectedIndex是一个大的垃圾值。之后,我得到0到3的值,这是应该的,但它们是随机的。不仅如此,每次触摸的每个标签都会报告不同的值。
这个应用程序是非常现在简单,我无法想象我能做些什么让事情出错。
有没有人看到(并希望解决)这种行为?
更新:我们有一个代码请求。没有什么可看的。
标签栏控制器被加载的applicationDidFinishLaunching:
[self.mainViewController view]; //force nib to load
[self.window addSubview:self.mainViewController.tabBarController.view]
目前还没有在MainViewController.m比合成其他任何代码和释放tabBarController。
从WebVewController.m:
- (void)viewWillAppear:(BOOL)_animation {
[super viewWillAppear:_animation];
NSURL *url;
switch([S_UIDelegate mainViewController].tabBarController.selectedIndex) {
case 0: url = [NSURL URLWithString:@"http://www.cnn.com"];
break;
case 1: url = [NSURL URLWithString:@"http://www.facebook.com"];
break;
case 2: url = [NSURL URLWithString:@"http://www.twitter.com"];
break;
case 3: url = [NSURL URLWithString:@"http://www.google.com"];
break;
default: url = [NSURL URLWithString:@"http://www.msnbc.com"];
}
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
这是我看到的随机值。 BTW,S_UIDelegate只是一个返回指向应用程序委托的指针的宏。我使用别人的应用程序模板,他是#define的粉丝,可以节省打字时间。
某些代码可能有所帮助... – 2010-04-07 17:10:16
您是否尝试将值指定给selectedIndex以查看发生了什么。 – FKDev 2010-04-07 17:28:24
您的tabController是否连接到appDelegate或mainViewcontroller? – FKDev 2010-04-07 17:32:05