2013-03-29 42 views
5

Tôi có ViewController đơn giản có chế độ xem vùng chứa với TableViewController. Tại ViewController tôi tải dữ liệu từ API bên ngoài và một phần của dữ liệu đó, tôi cần phải chuyển vào TableViewController trong vùng chứa.Truy cập vào bộ điều khiển xem bộ chứa

Có cách nào để thực hiện điều đó không? Cảm ơn bạn!

Trả lời

13

Bộ điều khiển chứa trong chế độ xem vùng chứa có thể được truy cập bởi self.childViewControllers từ bộ điều khiển chính. Nếu bạn chỉ có một, thì nó sẽ có tại self.childViewControllers [0].


Lưu ý: liên quan đến kỹ thuật tuyệt vời RD của giải thích trong bình luận dưới đây; đây là một ví dụ điển hình, được thử nghiệm và làm việc: điều này chỉ đơn giản là đi vào VC của cảnh tổng thể. Chỉ cần nhấp vào chính segue (ví dụ, biểu tượng nhỏ ở giữa mũi tên kết nối) để đặt định danh văn bản.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 
    if ([segue.identifier isEqualToString:@"containerLogin"]) 
     self.vcLogin = (LoginVC *)segue.destinationViewController; 

    if ([segue.identifier isEqualToString:@"containerStartNew"]) 
     self.vcStartNew = (StartNewVC *)segue.destinationViewController; 

    } 

Đây chỉ là cách để làm điều đó trong Swift: (bạn phải cẩn thận với unwrappers)

override func prepareForSegue(segue:(UIStoryboardSegue!), sender:AnyObject!) 
    { 
    if (segue.identifier == "feedContainer") 
     { 
     feed = segue!.destinationViewController as! Feed 
     feed.someFunction() 
     } 
    } 
+0

RD, cái quái gì phải làm gì nếu có nhiều hơn một? Làm sao bạn biết cái nào ?? Bất kỳ ý tưởng ?? – Fattie

+2

@JoeBlow, Bạn có thể kiểm tra lớp của bộ điều khiển bạn quay lại để xác định cái nào. Bạn cũng có thể chỉ định các bộ điều khiển trong preparForSegue thay vì làm như tôi đã nói trong câu trả lời của tôi (bộ điều khiển nhúng sẽ là segue.destinationViewController). Phương thức đó được gọi cho các bộ điều khiển nhúng, vì vậy bạn có thể thực hiện điều đó và kiểm tra định danh của segue để biết bộ điều khiển nào là bộ điều khiển nào. Đó có lẽ là cách tốt hơn để làm điều đó, đặc biệt nếu bạn có nhiều hơn một đứa trẻ. – rdelmar

+0

Tôi đã thử nghiệm nó và hoạt động hoàn hảo. Rực rỡ. Tuyệt vời mà không phải là phổ biến hơn được biết đến. – Fattie

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