2011-12-20 42 views
10

Tôi có một ứng dụng có hai phân đoạn. Trong một trong những phân đoạn, bộ điều khiển xem hiện tại trở thành một đại biểu và người kia thì không.PrepareForSegue và các đại biểu

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"MoreOptions"]) { 
     UINavigationController *navigationController = segue.destinationViewController; 
     MoreOptionsViewController *controller = (MoreOptionsViewController *)navigationController.topViewController; 
     controller.delegate = self; 
    } else if ([segue.identifier isEqualToString:@"FullStoryView"]) { 
     SingleStoryViewController *detailViewController = segue.destinationViewController; 
     detailViewController.urlObject = sender; 
    } 
} 

Tất cả điều này đều hoạt động tốt, nhưng tôi muốn thử và hiểu mã tốt hơn. Những gì tôi không hiểu là tôi có để có được một tham chiếu đến MoreOptionsViewController bằng cách lấy nó từ navigationController.topViewController hơn là chỉ đơn giản là nhận được nó từ segue.destinationViewController như tôi làm trong điều kiện thứ hai nếu. Có phải vì tôi đang đặt trình điều khiển chế độ xem hiện tại (self) làm đại biểu không? Một lần nữa, tôi không cố gắng giải quyết vấn đề, chỉ cố gắng để hiểu rõ hơn về những gì đang xảy ra.

Trả lời

11

Hãy xem bảng phân cảnh của bạn và hiển nhiên vì lý do này. Bạn đã nhúng MoreOptionsViewController vào một số UINavigationController và kết nối một khoảng cách với bộ điều khiển điều hướng, do đó đặt nó là destinationViewController. Điều này khá phổ biến.

+0

Ahh có, đôi khi câu trả lời nằm trong trang web đơn giản, phải không? Cảm ơn. –

4

Đại biểu phần lớn không liên quan trong ngữ cảnh câu hỏi của bạn.

Điểm đến đầu tiên của segue là bộ điều khiển điều hướng, có chứa bộ điều khiển xem bạn đang thực sự quan tâm. Vì vậy, để đến chế độ xem đó, bạn cần phải đi qua bộ điều khiển điều hướng vì sẽ không có bất kỳ thuộc tính nào quan tâm đến việc thiết lập.

Khoảng cách thứ hai của bạn sẽ được chuyển trực tiếp đến một bộ điều khiển chế độ xem đơn, do đó bạn có thể truy cập trực tiếp.

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