有人可以告訴我怎樣才能確定視圖控制器所在的tabbar索引。如何確定哪個tabbar索引是我的視圖控制器
簡化 - 我可以通過硬編碼索引跳轉到tabBarItem。
self.tabBarController.selectedIndex = 3;
然而,如果用戶自定義標籤欄的項目,有可能在在的viewController 3號是不是如此,因爲它已被移動用戶將想要的。我怎樣才能確定它已經移動到哪裏,以便我可以選擇正確的。
請任何幫助。
感謝,
李
有人可以告訴我怎樣才能確定視圖控制器所在的tabbar索引。如何確定哪個tabbar索引是我的視圖控制器
簡化 - 我可以通過硬編碼索引跳轉到tabBarItem。
self.tabBarController.selectedIndex = 3;
然而,如果用戶自定義標籤欄的項目,有可能在在的viewController 3號是不是如此,因爲它已被移動用戶將想要的。我怎樣才能確定它已經移動到哪裏,以便我可以選擇正確的。
請任何幫助。
感謝,
李
好了,我沒有運氣與任何任何成功的答案 - 但我沒有那種這麼認爲我會解釋我是如何做到這一點,因爲有人被卡住試圖做我做的事情。
我的標籤欄控制器被分配以0開始,並說以8結束(可在IB也可以做)
請確保tabBarController等代表是所有設置和inplement以下標籤每個tabBarItem委託方法:
- (void)tabBarController:(UITabBarController *)theTabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed {
NSInteger count = self.tabBarController.viewControllers.count;
NSMutableArray *tabOrderArray = [[NSMutableArray alloc] initWithCapacity:count];
for (UINavigationController *viewController in viewControllers)
{
NSInteger tag = viewController.tabBarItem.tag;
[tabOrderArray addObject:[NSNumber numberWithInteger:tag]];
}
[prefs setObject:tabOrderArray forKey:@"tabOrder"];
[prefs synchronize]; // optional
[tabOrderArray release];
}
(注意我用navControllers ontop的在我的應用程序ViewControllers的,因此,對於環路)
所以現在我能夠做的是簡單地做一個檢查,如果有在首選項陣列以新的標籤欄順序
NSArray * tabBarOrder = [prefs objectForKey:@"tabOrder"];
if(tabBarOrder) { ... }
,如果有一個標籤欄爲了我能得到VC我想的指數'[tabBarOrder indexOfObjectIdenticalTo:[NSNumber numberWithInt:theViewsTagImAfter]];
如果在prefs中沒有數組,你可以安全地假設它沒有移動,並且是在哪裏。
**
任何一個隨意破壞我如何做到了這一點,你應該覺得你可以在一個更時尚的方式已經完成了這一點。然而,這工作和其他建議沒有。
使用self.tabBarController.selectedViewController
財產。
UPDATE:要獲得特定的viewController的索引,使用:
NSUInteger index = [self.tabBarController.viewControllers indexOfObjectIdenticalTo:specificViewController];
你可以在UITabBar控制器的列表,並通過指針值進行比較。例如,一個視圖控制器是在中的UITabBar一樣可以計算出它是這樣的位置:
int loc = 0;
for (UIViewController *vc in [self.tabBarController viewControllers]){
if (vc == self.navigationController || vc == self){
break;
}
loc++;
}
if (loc == [[self.tabBarController viewControllers] count])
NSLog(@"Could not find me!");
else
NSLog(@"Im in tab:% d",loc);
沒有對不起,你誤會了我的問題或誤導我 - 我不是在尋找我目前的指數,即時通訊看着跳到一個特定的視圖控制器,哪(目前)我不知道哪個索引是在應該改變。任何更清楚?謝謝,抱歉。 – theiOSDude 2011-03-09 09:25:22
'selectedViewController'屬性不返回索引,而是返回'UIViewController'實例。也許我還是不明白你在找什麼... – 2011-03-09 09:28:05
對不起,對 - 你提到的很酷,它允許我選擇一個viewController,所以這樣排序,但是,我需要選擇相應的tabBarItem - 因此,需要index .. – theiOSDude 2011-03-09 09:38:17