12

Tôi xin lỗi tôi mới tham gia lập trình iphone.Mục điều hướng không xuất hiện trên View Controller

Tôi đã tạo ứng dụng Master-Detail Iphone (do đó Trình điều khiển Điều hướng đi kèm với dự án). Tôi segue đến một bộ điều khiển xem mới tôi tạo ra thông qua một UIBarButtonItem trên masterviewcontroller. Tuy nhiên không giống như các detailviewcontroller (mà đi kèm với dự án) tôi dường như không thể có được navigationitem (hoặc navigationbar?) Để hiển thị trên xem mặc dù nó xuất hiện trong danh sách cảnh của kịch bản của tôi.

Heres một số mã và một ảnh chụp màn hình:

Trong viewDidLoad masterviewcontroller.m của tôi() chức năng

UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:normal target:self action:@selector(goToSettings:)]; 
self.navigationItem.leftBarButtonItem = settingsButton; 

trong masterviewcontroller.m tôi

- (IBAction)goToSettings:(id)sender{  
    [self performSegueWithIdentifier:@"SettingsSegue" sender:self]; 
} 

tôi đã cố gắng thêm một danh hiệu vào navigationitem trong hàm viewDidLoad của lớp viewcontroller.m mới mà tôi đã tạo (được đề cập trong số này Link nhưng nó không hoạt động)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    self.navigationItem.title = @"Settings"; 
    self.navigationItem.leftBarButtonItem = self.editButtonItem; 
} 

Nhưng nó vẫn hiển thị trong kịch bản của tôi (nó xuất hiện trong danh sách dưới sân khấu nhưng không phải trong việc hiển thị các view)

Vì vậy, câu hỏi của tôi là tại sao nó bây giờ hiển thị và làm thế nào tôi có làm được không? Tôi muốn một nút quay lại giống như bộ điều khiển xem chi tiết của tôi đi kèm với dự án chi tiết chính.

EDIT # 1

Tôi đã thêm một tấm séc cho dù navigation controller là con số không và nó không phải là con số không (câu lệnh if không bao giờ bước vào) Tôi cũng đã cố gắng thay đổi mục navigation để sao lưu và loại bỏ và không ai có thể làm việc .

if(self.navigationItem == nil) 
{ 
    [ self.navigationItem init]; 
} 
self.navigationItem.title = @"Settings"; 
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 

Bây giờ tôi có đủ uy tín để hiển thị một hình ảnh tôi có thể chứng minh rằng mục menu xuất hiện trong danh sách nhưng doesnt hiển thị trên quan điểm

enter image description here

+0

Các câu lệnh if ở đây là không bao giờ được nhập vào, bởi vì các tài liệu nói rằng self.navigationItem được tạo ra khi đang bay. –

Trả lời

12

Các Navigation mục không xuất hiện vì "phong cách" của segue tôi.

Khoảng cách di chuyển cảnh từ bộ điều khiển chế độ xem chính sang bộ điều khiển chế độ xem cài đặt được đặt thành 'phương thức'. Nó phải được thiết lập để 'đẩy'.Này được thực hiện từ các kịch bản về các tiện ích pane

1

Bạn đã xác minh rằng bạn điều khiển chuyển hướng được liệt kê trong phương thức viewDidLoad không phải là nil?

Giả sử bạn thực hiện chính xác self.navigationItem không phải là không, có vẻ như bạn đang đặt sai self.navigationItem.leftBarButtonItem thành editButtonItem, thay vào đó hãy thử xóa tất cả điều này lại với nhau!

Nếu loại bỏ nó không giải quyết được vấn đề thử:

self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 
6

Bạn phải thay đổi phong cách Segue của bạn bằng cách làm điều này:

  • Chọn Segue trong Storyboard của bạn;
  • Chuyển đến thanh tra Thuộc tính (trên các tab ngăn bên phải);
  • Thay đổi thuộc tính Kiểu thành Nhấn.

Nó sẽ làm cho cuộn màn hình từ phải sang trái và thanh Điều hướng sẽ xuất hiện trượt. Với phương thức, màn hình đến từ dưới lên trên cùng của màn hình và nó sẽ không cho phép thanh Điều hướng xuất hiện.

0

Vui lòng kiểm tra xem bộ điều khiển chế độ xem của bạn có phải là bộ điều khiển chế độ xem gốc của bộ điều khiển điều hướng hay không. Bạn không thể trực tiếp trình bày một bộ điều khiển xem như một bộ điều khiển xem phương thức. Bạn phải làm cho bộ điều khiển xem của bạn là bộ điều khiển xem gốc của bộ điều khiển điều hướng và sau đó trình bày bộ điều khiển điều hướng của bạn làm bộ điều khiển chế độ xem phương thức.

// Create the root view controller for the navigation controller 
// The new view controller configures a Cancel and Done button for the 
// navigation bar. 
YourViewController *addController = [[YourViewController alloc] 
        init]; 

// Configure the YourViewController. 

// Create the navigation controller and present it. 
UINavigationController *navigationController = [[UINavigationController alloc] 
         initWithRootViewController:addController]; 
[self presentViewController:navigationController animated:YES completion: nil]; 
4

Các vấn đề trong trường hợp của tôi là bộ điều khiển Navigation không phải là "ban đầu View Controller"

Vì vậy, tôi đã phải làm điều này

enter image description here

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