2013-04-18 28 views
7

Tôi có một UINavigationController đơn giản mà đẩy UIViewController vào ngăn xếp thông qua một segue tùy chỉnh. Tôi sau đó thực hiện một IBAction trên UIViewController đầu tiên để thực hiện một hành động thư giãn và tôi thực hiện segueForUnwindingToViewController. Thật không may, segueForUnwindingToViewController không được gọi (tôi đã xác nhận rằng canPerformUnwindSegue đang được gọi trên VC đầu tiên).Unwind Segue cho UINavigationController

Tôi chưa thấy bất kỳ ví dụ đơn giản nào về hành vi này. Có ai giúp đuợc không? Cảm ơn.

Đây là mã từ trình điều khiển chế độ xem gốc của NavigationController.

- (IBAction) unwindFromSegue:(UIStoryboardSegue *)segue { 
// unwinds back to here 
//[self performSegueWithIdentifier:@"UnwindToObjectManageSegue" sender:self]; 

} 

- (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController 
        withSender:(id)sender { 
return YES; 
} 

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
return YES; 
} 

- (UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController 
            fromViewController:(UIViewController *)fromViewController 
              identifier:(NSString *)identifier { 
ObjectManageObjectDetailSegue *segue = [[ObjectManageObjectDetailSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController]; 
[segue setUnwinding:YES]; 
return segue; 
} 
+0

Tôi cho rằng bạn đã làm theo các bước từ [câu trả lời này] (http://stackoverflow.com/a/12843906/335858) nhưng mọi thứ không hiệu quả với bạn, đúng không? – dasblinkenlight

+0

Đúng vậy. Tôi theo sau đó đến một T. Thật không may, segue thư giãn của tôi không được gọi. Mã định danh đang được gửi chính xác, nhưng bản thân nó không bao giờ được gọi. – Clay

+0

Nó sẽ là tuyệt vời nếu ai đó có thể có thể gửi một dự án mẫu mà minh họa những gì đã được đăng trong chủ đề đó. Tôi nghĩ đó là một ví dụ tuyệt vời, nhưng nó khá phổ biến. – Clay

Trả lời

23

tôi đã cùng một vấn đề và cuối cùng tôi đã tìm thấy một giải pháp: https://github.com/simonmaddox/CustomUnwindSegue

Ông cũng đã có một vấn đề với nó không được gọi. Hóa ra rằng bất kỳ bộ điều khiển xem nào trong UINavigationController sẽ không gọi trình điều khiển xem trình bày nhưng thay vào đó là UINavigationController. Điều này có nghĩa là bạn phải phân lớp UINavigationController đó và thêm phương thức đó vào đó.

+4

OMG, tôi đã đấu tranh với điều này trong khoảng một ngày. Cảm ơn bạn! Điều này thực sự có vẻ giống như một chút của một giám sát trong cách storyboards và segues tùy chỉnh làm việc. Nhưng ít nhất tôi có cái gì đó hoạt động ngay bây giờ! –

+1

Có lẽ đây phải là câu trả lời được chấp nhận? – Greeso

+0

Cảm ơn Greeso. Có lẽ là người đã quên. Ngoài ra, vui mừng giúp Danny Sung – matrinox

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