2012-01-13 21 views
55

Tôi muốn thay đổi mã bên dưới bằng bảng phân cảnh bằng Xcode 4.2.Làm cách nào để thay đổi "initwithNibName" trong bảng phân cảnh?

UIViewController * example  = [[ExampleViewController alloc] initWithNibName:@"ExampleViewController" bundle:nil]; 

Hiện tại tệp ExampleViewController.xib tồn tại. nhưng tôi muốn làm cho nó với bảng phân cảnh. hãy giúp tôi. (Tôi không giỏi tiếng Anh. Xin lỗi)

Trả lời

132

Lớp UIStoryboard là bạn của bạn:

UIStoryboard* sb = [UIStoryboard storyboardWithName:@"mystoryboard" 
               bundle:nil]; 
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ExampleViewController"]; 
+0

Cảm ơn ~ ^^ Câu trả lời của bạn rất hữu ích. – jokor7

+0

Stephen, cảm ơn bạn! Tôi đã tìm kiếm một thời gian khá dài để tìm cách làm thế nào để tạo ra một cái nhìn của Storyboard. Câu trả lời của bạn (và câu hỏi của jokor7) giống như một ly nước ngọt ở giữa sa mạc Sahara khô. – bejonbee

+5

Nó thực sự là bạn của bạn. Nếu bạn chỉ có một bảng phân cảnh chính, bạn không cần phải khởi tạo nó như trên, nhưng chỉ có thể gọi: '[self.storyboard instantiateViewControllerWithIdentifier: @" "];' – JCoster22

8
  • Nếu vẫn còn trong tệp xib của riêng mình thì bạn không thay đổi gì cả.
  • Nếu bạn đã di chuyển mọi thứ vào bảng phân cảnh, thì bạn sẽ không thường phải thực hiện việc này khi bạn liên kết giữa các trình điều khiển chế độ xem bằng cách sử dụng phân đoạn.

Nếu không có những điều trên là đúng sự thật, ví dụ: điều khiển xem của bạn nằm trên các kịch bản nhưng không có segue kết nối với nó, sau đó bạn muốn phương pháp instantiateViewControllerWithIdentifier: UIStoryboard của mô tả trong the documentation. Bạn phải đặt số nhận dạng trong bảng phân cảnh để tính năng này hoạt động.

+0

nhờ @jrturton ^^ khiển Quan điểm của tôi là trên kịch bản nhưng không có segue với nó. Và thay đổi mã initWithNibName thành 'UIViewController * example = [self.view instantiateViewControllerWithIdentifier: @ "ExampleView"];'. Nhưng nó có lỗi. Không bằng cả hai mã? – jokor7

+1

@ jokor7 Bạn không gửi 'instantiateViewControllerWithIdentifier:' tới self.view hoặc bất kỳ chế độ xem nào khác, bạn gửi nó tới bảng phân cảnh. Cụ thể hơn, bạn cần gửi nó đến * bảng phân cảnh * chứa bộ điều khiển xem. Vui lòng xem lớp UIStoryboard. – Caleb

+0

@ jokor7 không thể thêm bất kỳ điều gì khác vào bình luận của Caleb. Với câu trả lời đó và stephen bạn nên có mọi thứ bạn cần. – jrturton

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