2012-10-22 36 views
6

Tôi đang sử dụng bảng phân cảnh trong iOS của mình. Màn hình đầu tiên là màn hình đăng nhập. Khi người dùng đăng xuất hoặc bị đăng xuất, anh ấy có thể đang ở trên màn hình trong phân cấp sâu.Quay lại bảng điều khiển ban đầu ViewController khi đăng xuất

Ví dụ: bộ kiểm soát xem đăng nhập => chế độ xem bộ điều khiển => thanh điều khiển thanh => nav controller => view controller => view controller. Tôi muốn đi tất cả các con đường trở lại từ bộ điều khiển xem trên cùng nhất để điều khiển dưới cùng.

Edit: Đây là một sơ đồ của hệ thống phân cấp xem: enter image description here

Cảm ơn!

Trả lời

2

này nên làm việc giả định tất cả mọi thứ đã được đẩy lên điều hướng stack:

[self.navigationController popToRootViewControllerAnimated:YES]; 
+0

Cập nhật với một biểu đồ để cho thấy lý do tại sao điều đó không hiệu quả. –

+0

ah tôi thấy, sơ đồ đẹp. Bạn cũng có thể phải sử dụng NSNotificationCenter để đăng thông báo khi đăng xuất. Bộ điều khiển xem phương thức đầu tiên của bạn có thể nghe thông báo và loại bỏ chính nó khi nó nhận được nó. –

5

tôi đã viết một thể loại cho UIViewControllers mà dường như được làm việc:

- (void) popToInitialViewController 
{ 
    UIViewController *vc; 
    if (self.navigationController != nil) { 
     vc = self.navigationController; 
     [self.navigationController popToRootViewControllerAnimated:NO]; 
     [vc popToInitialViewController]; 
    } 
    else if (self.tabBarController != nil) { 
     vc = self.tabBarController; 
     [vc popToInitialViewController]; 
    } 
    else if (self.presentingViewController != nil) { 
     vc = self; 

     while (vc.presentingViewController != nil) 
      vc = vc.presentingViewController; 

     [vc dismissModalViewControllerAnimated:NO]; 

     [vc popToInitialViewController]; 
    } 
} 

Comments được đánh giá cao :)

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