2011-11-24 23 views
6

Tôi đã tự hỏi làm thế nào để sử dụng đúng cách bảng phân cảnh để đưa ra một bộ điều khiển xem một cách bình thường. Cá nhân tôi thích làm việc với xibs, nhưng có vẻ như bảng phân cảnh đang trở nên phổ biến và sẽ là con đường để đi trong tương lai.Cách sử dụng đúng cách bộ điều khiển chế độ xem với bảng phân cảnh xcode 4.2

Cách tôi thường đặt bộ điều khiển chế độ xem sẽ giống như sau: giả sử chúng ta có ViewControllerA (A viết tắt) và ViewControllerB (viết tắt B). Sau đó tôi thường đặt giao thức trong B.h chỉ định phương thức ủy nhiệm khi B muốn được loại bỏ và thêm trường id<theProtocol> delegate làm thuộc tính assign. Giả sử tôi bận rộn trong A và tôi muốn trình bày B modally, tôi sẽ viết:

B* b = [[B alloc] initWithNibName:@"B" bundle:nil]; 
b.delegate = self; 
[self presentModalViewController:B animated:YES]; 

Sử dụng các kịch bản, tôi biết nó có thể đưa ra một bộ điều khiển xem khác nhau trong một cách modal bởi ctrl-kéo từ một nút cho một bộ điều khiển xem và chọn phương thức làm loại chuyển đổi. Tôi chỉ tự hỏi; nơi nào tôi thiết lập các đại biểu của bộ điều khiển xem mới? Thực hành chính xác của việc truyền đạt điều gì cho bộ điều khiển xem phương thức của bạn là gì? Tôi thật sự không biết gì cả thỏa thuận với Segues là ...

Trả lời

5

Hãy xem thistutorial

Theo đó, bạn nên đặt các đại biểu như sau:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"AddPlayer"]) 
    { 
     UINavigationController *navigationController = 
      segue.destinationViewController; 
     PlayerDetailsViewController 
      *playerDetailsViewController = 
      [[navigationController viewControllers] 
       objectAtIndex:0]; 
     playerDetailsViewController.delegate = self; 
    } 
} 

đâu @ "AddPlayer" là tên của phương thức 'modal' segue

+1

Tôi đã xem hướng dẫn và rõ ràng là tôi không có lợi khi nghi ngờ câu trả lời của bạn, nhưng bạn có đồng ý rằng mã này xấu hơn nhiều so với trước đây không? Nó chỉ có vẻ như một rắc rối để làm một cái gì đó đã thực sự dễ dàng trước khi ... – Warkst

+1

Không sử dụng storyboards nếu nó có vẻ xấu xí cho bạn –

+1

Đó là lý do chính tôi không sử dụng chúng ngay bây giờ, tôi chỉ là "sợ" họ sẽ trở thành cách chính để làm điều đó trong tương lai. – Warkst

0

Thay vì sử dụng bộ điều khiển điều hướng, bạn có thể trực tiếp sử dụng đối tượng UIStoryboardSegue được chuyển vào prepareForSegue. Nó có một thuộc tính được gọi là destinationViewController là bộ điều khiển xem đang được khởi tạo. Tôi thấy rằng sạch hơn rất nhiều. Đây là một ví dụ.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"AddPlayer"]) 
    { 
     PlayerDetailsViewController 
      *playerDetailsViewController = 
      (PlayerDetailsViewController *) segue.destinationViewController; 

     playerDetailsViewController.delegate = self; 
    } 
} 

IMO Tôi nghĩ rằng bảng phân cảnh rất tuyệt vì chúng hoạt động giống như bản thiết kế ứng dụng của bạn. Ngoài ra tôi đã không bao giờ thích ngòi. = D

+0

Ồ chờ đã. Câu trả lời trước đã làm điều này nhưng họ đã gán bộ điều khiển xem đích đến bộ điều khiển xem điều hướng mà bạn không phải làm (tôi thậm chí không biết nếu nó hoạt động ...). –