2015-02-18 19 views
26

Vì vậy, tôi có một phương pháp prepareForSegue như thế này:DestinationViewController Segue và UINavigationController nhanh chóng

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "fromEventTableToAddEvent" { 

     let addEventViewController: AddEventViewController = segue.destinationViewController as! AddEventViewController 

     addEventViewController.newTagArray = newTagArray 

    } 
} 

Tuy nhiên, khi chạy các treo ứng dụng và các bản ghi nhổ ra thông điệp này:

Không thể đúc giá trị của loại 'UINavigationController'

Lỗi đến vì addEventController được nhúng trong bộ điều khiển điều hướng, tuy nhiên tôi không chắc chắn làm thế nào tôi sẽ thiết lập segue để các destinationViewController được thiết lập để NavigationController, nhưng cũng cho phép tôi để vượt qua các biến trong phương pháp preparForSegue để addEventController

Vì vậy, làm thế nào tôi sẽ làm điều này bằng cách sử dụng Swift?

Tôi cực kỳ đánh giá cao sự trợ giúp và thời gian bạn có thể cung cấp để phản hồi. Nó giúp rất nhiều

Trả lời

97

Bạn chỉ cần truy cập topViewController của trình điều khiển điều hướng, đó sẽ là AddEventViewController. Đây là mã số:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "fromEventTableToAddEvent" { 

     let nav = segue.destinationViewController as! UINavigationController 
     let addEventViewController = nav.topViewController as! AddEventViewController 

     addEventViewController.newTagArray = newTagArray 

    } 
} 
+1

Cảm ơn bạn @Rdelmar, tôi đã gặp vấn đề tương tự và bạn đã giải quyết nó. – mvasco

+1

Xin cảm ơn! Đơn giản dễ dàng. –

+0

bất kỳ cập nhật nào cho swift 3? – reggie

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