這應該是這麼簡單......但有些棘手的事情正在發生。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