2012-07-01 30 views
11

Đây là mã của tôi. Tôi muốn đặt một nút quay lại trên rootviewController mở.Cách hiển thị nút quay lại trên RootViewController của UINavigationController?

- (void)selectSurah:(id)sender { 

    SurahTableViewController * surahTableViewController = [[SurahTableViewController alloc] initWithNibName:@"SurahTableViewController" bundle:nil]; 
    [email protected]"Surah"; 

    s[email protected]"Back"; 

    UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:surahTableViewController]; 

    [self presentModalViewController:aNavigationController animated:YES]; 
} 
+0

Để quay lại vị trí? – jarryd

+2

Câu trả lời là hiển nhiên. quay lại nơi hiện tạiModalViewController được gọi. Xem câu trả lời @Flex_Addicted bên dưới. – shaikh

Trả lời

8

Tôi không tin rằng nó có thể để bật bộ điều khiển xem gốc ra khỏi menu ngăn xếp, nhưng bạn có thể giả mạo nó với một UIButton thêm vào như là các giao diện tùy chỉnh của một UIBarButtonItem:

UIButton *b = [[UIButton alloc]initWithButtonType:UIButtonTypeCustom]; 
[b setImage:[UIImage imageNamed:@"BackImage.png"] forState:UIControlStateNormal]; 
[b addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; 
self.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:b]; 

Một PSD phù hợp Bạn có thể tìm thấy các phần tử giao diện người dùng iOS here.

+0

cảm ơn liên kết PSD. – shaikh

2

Hình thức và hành vi của nút quay lại trong UINavigationController dựa trên tương tác giữa một chồng UINavigationControllers. Đặt một nút quay lại trên bộ điều khiển đầu tiên phá vỡ quy ước này, không có gì để quay trở lại, đó là lý do tại sao mã của bạn không hoạt động.

Bạn sẽ cần phải tự thêm UIBarButtonItem vào mã thanh tiêu đề như:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(back:)]; 

Nếu bạn thực sự muốn nó trông giống như một nút quay lại, bạn sẽ cần phải tự tạo ra UIBarButtonItem với một hình ảnh phản chiếu nút quay lại.

Một đề xuất khác, có vẻ như bạn đang cố gắng sử dụng nút quay lại để loại bỏ bộ điều khiển chế độ xem, tôi sẽ gắn với một cái gì đó thông thường hơn như nút "Đóng" hoặc "Xong" để đóng chế độ xem điều khiển. Nút quay lại thực sự thích hợp hơn để điều hướng một chồng các UINavigationControllers.

+1

+1 cho đề xuất nhãn 'Đóng' hoặc 'Xong'. cảm ơn – shaikh

4

SurahTableViewController là bộ điều khiển chế độ xem gốc trong bộ điều khiển điều hướng, bạn không thể quay lại thư mục gốc vì bạn đã ở đó. Vì bạn đã trình bày nó modally từ cái gì khác, bạn cần phải đặt một nút trên thanh nav có một IBAction trong đó kêu gọi:

[self dismissModalViewControllerAnimated:YES]; 
5

Faizan,

Helium3 bình luận có ý nghĩa.

Tôi giả sử rằng nút của bạn là cần thiết để loại bỏ bộ điều khiển được trình bày một cách bình thường, có đúng không? Đúng nếu tôi sai.

Nếu có, bạn chỉ có thể tạo UIBarButtonItem mới và đặt là nút trái (hoặc phải) cho UINavigationControllernavigationItem. Để không phá vỡ đóng gói, hãy tạo nó theo phương pháp viewDidLoad cho bộ điều khiển SurahTableViewController của bạn.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // make attention to memory leak if you don't use ARC!!! 
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Close" 
      style:UIBarButtonItemStyleBordered 
      target:self 
      action:@selector(close:)]; 
} 

-(void)close:(id)sender 
{ 
    // to dismiss use dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion 
    // dismissModalViewControllerAnimated: is deprecated 

    [self dismissViewControllerAnimated:YES completion:^{ NSLog(@"controller dismissed"); }]; 
} 
+0

đó là một câu trả lời hoàn hảo. hoạt động siêu tuyệt vời. – shaikh

+0

Xin lỗi vì đã hồi sinh người chết (chủ đề), nhưng chỉ cần lưu ý: bạn nên thêm nút vào UIViewController đang được trình bày trong UINavigationController, chứ không phải chính UINavigationController! Điều này đã cho tôi lãng phí một giờ hoặc lâu hơn :( – MacD

+0

@MadD Xin lỗi vì sự chậm trễ.Bạn có ý nghĩa gì? Nút này được gắn vào thanh điều hướng Tại sao nó không hoạt động cho bạn? Cảm ơn trước. –

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