12

Xin lỗi vì câu hỏi mới. Tôi có một UITabBar trong khung nhìn cửa sổ chính của tôi cũng như một mảng các UINavigationControllers cho mỗi Tab. Cấu trúc tương tự như ứng dụng iPod trong đó quan điểm chính có thể được nhìn thấy bằng cách chọn các mục TabBar và sau đó người dùng có thể đi sâu hơn với NavigationController bằng cách đẩy các khung nhìn vào ngăn xếp.Nhấn nút UITabBar theo cách lập trình trong Xcode

Điều tôi muốn làm là thực hiện tương đương việc nhấn nút TabBar ở dưới cùng từ bất kỳ phần phụ nào trong mã (nghĩa là thay đổi thuộc tính đã chọn của TabBar và hiển thị khởi chạy trình điều khiển xem đầu tiên cho tab).

Mọi trợ giúp sẽ được đánh giá cao.

Dave

Trả lời

23
[myTabBarController setSelectedIndex:index] 

EDIT: Trả lời câu hỏi phần 2 từ bình luận:

Bạn có thể xác định một phương pháp trong appdelegate cho chuyển sang một tab khác nhau.

Và bạn có thể có được giữ của appdelegate từ bất cứ nơi nào và gửi tin nhắn .. cái gì đó như:

MyAppDelegate *appDelegate = (MyAppDelegate*) [[UIApplication sharedApplication] delegate]; 
[appDelegate SwitchToTab:index] 
+0

Với tôi, thiết lập bằng cách gọi phương thức Tabbarcontroller có vẻ phù hợp! Nhưng sẽ kiểm tra nó không quan trọng! – prakash

+0

Có, có thể bạn đã đúng - Tôi đã lấy một phần mã của tôi, nơi tôi đã sử dụng TabBar mà không có thanh điều khiển – Vladimir

+0

Điều này là rất tốt. OK, câu hỏi câm phần 2. Làm cách nào để truy cập đối tượng gốc từ mã của tôi? TabBar thực tế được thiết lập trong mã từ trình điều khiển Chế độ xem gốc. Tôi muốn có thể thiết lập thuộc tính của TabBar nhưng từ một bộ điều khiển khung nhìn khác đã được đẩy vào ngăn xếp. Tôi có giải thích đủ tốt không. Nó giống như tôi cần một tương đương với bản thân nhưng đối với đối tượng cha mẹ ở trên cùng của cây. Một lần nữa xin lỗi vì câu hỏi mới, tôi thiếu điều gì đó khá cơ bản trong suy nghĩ của mình, tôi đoán vậy. –

11

cách khác ...

[self.parentViewController.tabBarController setSelectedIndex:3]; 
3

Tôi muốn trả lời Prakash, nhưng không thể hiểu được làm thế nào. Có lẽ tôi bị chặn cho đến khi điểm số của tôi tăng lên.

Nhưng dù sao, tôi hy vọng điều này sẽ giúp người:

Tôi đã làm những gì Prakash nói, và không có gì đang xảy ra. Đó là bởi vì để có được một con trỏ đến đại biểu ứng dụng của tôi, tôi đã làm điều này:

AppDelegate_Phone *appDelegate = [[AppDelegate_Phone alloc] init]; 

Khi nào tôi nên đã làm điều này:

AppDelegate_Phone *appDelegate = (AppDelegate_Phone *) [[UIApplication sharedApplication] delegate]; 

Newbie sai lầm.

0

Đối với điều này, bạn chỉ cần phải thực hiện UITabBar điều khiển -

.h File -

UITabBarController *_pTabBarController; 
@property (nonatomic, retain) IBOutlet UITabBarController *_pTabBarController; 

.m File - 
// synthesize it 
@synthesize _pTabBarController;  

At initial load 

// You can write one function to add tabBar - 

// As you have already mentioned you have created an array , if not 

_pTabBarController = [[UITabBarController alloc] init]; 
    NSMutableArray *localViewControllersArray = [[NSMutableArray alloc] initWithCapacity:4]; 
    UINavigationController *theNavigationController; 

    _pController = [[Controller alloc] initStart]; 
    _pController.tabBarItem.tag = 1; 
    _pController.title = @"Baranches"; 
    theNavigationController = [[UINavigationController alloc] initWithRootViewController:_pController]; 
    theNavigationController.tabBarItem.tag = 1; 
    theNavigationController.tabBarItem.image = [UIImage imageNamed:@"icon_branches.png"]; 
    [localViewControllersArray addObject:theNavigationController]; 
    [theNavigationController release]; 

hơn bạn có thể thiết lập chỉ mục theo nhu cầu của bạn

self._pTabBarController.selectedIndex = 0; // as per your requirements 
0
[self.parentViewController.tabBarController setSelectedIndex:3]; 

chọn chỉ số cho tôi nhưng nó chỉ làm nổi bật chỉ mục của navbarcontroller là chỉ mục hoạt động, nhưng trong khi nó chỉ ra rằng tôi ndex nó đã được thực sự trên một viewcontroller khác nhau hơn đã được đề xuất bởi mục tabbarmenu.

Chỉ muốn thêm rằng tôi đã sử dụng điều này từ trình điều khiển chế độ xem của tôi và nó được thực hiện như một người nào đó thực sự nhấn menuitem; từ mã:

UITabBarController *MyTabController = (UITabBarController *)((AppDelegate*) [[UIApplication sharedApplication] delegate]).window.rootViewController; 
[MyTabController setSelectedIndex:1]; 

Cảm ơn bạn đã đăng/trả lời nó đã giúp ích rất nhiều trong dự án của tôi.

0

Tôi muốn làm điều gì đó tương tự nhưng đối với XCode 6.4 iOS (8.4), setSelectedIndex sẽ không thực hiện.

Thêm điều khiển quan điểm của thanh tab vào một danh sách và sau đó sử dụng một cái gì đó như sau trong một số chức năng và sau đó gọi nó là:

FirstViewController *firstVC = [[self viewControllers] objectAtIndex:0]; 
[self.selectedViewController.view removeFromSuperview] 
[self.view insertSubview:firstVC.view belowSubview:self.tabBar]; 
[self.tabBar setSelectedItem:self.firstTabBarItem]; 
self.selectedViewController = firstVC; 

Bạn có thể có mã tương tự đã được bên didSelectedItem của bạn ..

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 

    if (item == self.firstTabBarItem) 
     // Right here 
    } 
    else if ... 
} 
Các vấn đề liên quan