2012-01-16 45 views
5

Tôi gặp một số khó khăn khi thay đổi bộ điều khiển thanh tab. Về cơ bản tôi có UITabBarController với 3 bộ điều khiển. Lần đầu tiên khi ứng dụng bắt đầu. Tôi thay đổi một bộ điều khiển như thế này:UItabBar thay đổi Xem Bộ điều khiển

NSMutableArray *muteArray = [[NSMutableArray alloc] init]; 
FirstPage *online; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 

    online =[[FirstPage alloc] initWithNibName:nil bundle:nil]; 


}else{ 

    online =[[FirstPage alloc] initWithNibName:nil bundle:nil]; 
} 

//adding all controllers of tab bar to array 
[muteArray addObjectsFromArray:_navigationCotroller.viewControllers]; 
online.tabBarControllers = [muteArray copy]; 
//replacing object of login controller to after login controller 
[muteArray replaceObjectAtIndex:1 withObject:online]; 


[online release]; 

//setting new controllers to tab bar 
[_navigationCotroller setViewControllers:muteArray animated:YES]; 

[muteArray release]; 

Sau đó, trong bộ điều khiển FirstPage, tôi thực hiện một số thay đổi và nhấn OK. Bây giờ tôi cần phải thay đổi bộ điều khiển một lần nữa, làm điều này:

NSLog(@"Before change Tab Bar cotrollers = %@",self.tabBarController.viewControllers); 

[self.tabBarController setViewControllers:_tabBarControllers animated:YES]; 

NSLog(@"After change Tab Bar cotrollers = %@",self.tabBarController.viewControllers); 

[self.tabBarController.tabBarController setSelectedIndex:1]; 

_tabBarControllers là bộ điều khiển mà tôi đã lưu khi ứng dụng bắt đầu.

Bộ điều khiển thay đổi mã này, nhưng khi tôi muốn mở bộ điều khiển đã thay đổi với setSelectedIndex nó không hoạt động.

Bất kỳ ý tưởng nào?

Và in này:

Trước khi thay đổi Tab Bar cotrollers = NULL Sau khi thay đổi Tab Bar cotrollers = NULL

+0

_navigationBộ điều khiển cũng là lỗi đánh máy trong mã của bạn? –

+0

_navigationCotroller là chính UITabBarController – Streetboy

+0

tâm thiếu "N" nhân vật đó;) _navigationCotroller -> _navigationCoNtroller –

Trả lời

10

Đầu tiên tôi giả sử bạn có nghĩa là:

[self.tabBarController setSelectedIndex:1]; 

Không rằng nó có vẻ như vấn đề là với _tabBarControllers của bạn.

những gì làm cho kết quả sau:

NSLog(@" _tabBarControllers count = %d", [_tabBarControllers count]); 
NSArray* newArray = [NSArray arrayWithArray:self.tabBarController.viewControllers]; 
NSLog(@" newArray count = %d", [newArray count]); 

EDIT: Liệu sau thành công loại bỏ các tab đầu tiên với không có vấn đề?

NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.tabBarController.viewControllers]; 
[newArray removeObjectAtIndex:0]; 
[self.tabBarController setViewControllers:newArray animated:YES]; 

EDIT 2:

hãy thử thay đổi:

[muteArray addObjectsFromArray:_navigationCotroller.viewControllers]; 
online.tabBarControllers = [muteArray copy]; 
[muteArray replaceObjectAtIndex:1 withObject:online]; 

tới:

[muteArray addObjectsFromArray:self.tabBarController.viewControllers]; 
[muteArray replaceObjectAtIndex:1 withObject:online]; 
online.tabBarControllers = [muteArray copy]; 

Thành thật mà nói tôi thấy nó khó để làm theo cấu trúc ứng dụng của bạn và đối tượng tài liệu tham khảo .

+0

_tabBarControllers bạn đếm = 3 newArray count = 3 và Trước khi thay đổi Tab Bar cotrollers = ( "", "", "" ) Sau khi thay đổi Tab Bar cotrollers = (null) – Streetboy

+0

Nếu không nhìn thấy mã của bạn, nơi bạn tạo _tabBarControll ers rất khó để giúp đỡ. – ader

+0

có mã ở trên: online.tabBarControllers = [muteArray copy]; tại đây tôi sao chép tất cả các bộ điều khiển được tạo mặc định. – Streetboy

Các vấn đề liên quan