2012-01-24 30 views
22

Trước khi bảng phân cảnh tôi có thể thiết lập các đại biểu và nguồn dữ liệu chỉ bằng cách kéo một lối ra vào một lớp. Với bảng phân cảnh, tôi không thể kéo ổ cắm vào bộ điều khiển chế độ xem khác; không có điểm đến nào đáp lại nó.Bảng phân cảnh - thiết lập các đại biểu

Nếu tôi nhấp vào đối tượng bộ điều khiển chế độ xem, tôi có thể thấy chủ sở hữu lớp ở dưới cùng, nhưng ngay sau khi tôi chọn bộ điều khiển chế độ xem khác chứa ổ cắm, lựa chọn cũ sẽ biến mất, vì vậy tôi không thể kết nối hai.

Đây có phải là cách của Apple nói rằng chúng ta chỉ nên kết nối chúng theo lập trình?

Trả lời

27

đúng. Đặt đại biểu hoặc dữ liệu khác trong phương thức prepareForSegue:sender: của bạn. Dưới đây là ví dụ:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Check the segue identifier 
    if ([segue.identifier isEqualToString:@"showDetail"]) 
    { 
     // Get a reference to your custom view controller 
     CustomViewController *customViewController = segue.destinationViewController; 

     // Set your custom view controller's delegate 
     customViewController.delegate = self; 
    } 
} 
+3

Làm thế nào về cách thiết lập các đại biểu cho một UISplitViewController? Mã mẫu tôi đang xem xét xử lý nó bằng cách vào bộ điều khiển xem gốc của cửa sổ như sau: 'UISplitViewController * splitViewController = (UISplitViewController *) self.window.rootViewController;' Trong khi kỹ thuật chính xác, và nó hoạt động, nó có vẻ giống như một cách tiếp cận bẩn so với các đại biểu đẹp và các bộ điều khiển xem được đặt trước các bảng phân cảnh ... –

0

Nếu bảng phân cách đích của bạn Xem bộ điều khiển là UIViewController thì @Marco trả lời là đúng. Nhưng nếu điểm đến của bạn View Controller là một UINavigationViewController sau đó bạn có để có được những UIViewController từ UINavigationViewController:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Check the segue identifier 
    if ([segue.identifier isEqualToString:@"chooseCategoryType"]) 
    { 
     // Get a reference of your custom view controller if your segue connection is an UIViewController 
     // CustomViewController *customViewController = segue.destinationViewController; 
     // Get a reference of your custom view controller from navigation view controller if your segue connection is an UINavigationViewController 
     CustomViewController *customViewController = [[[segue destinationViewController] viewControllers] objectAtIndex:0]; 

     // Set your custom view controller's delegate 
     customViewController.delegate = self; 
    } 
} 
Các vấn đề liên quan