2015-09-08 19 views
5

Tôi có một số ViewController với số Container View có số TableViewController được nhúng.ContainerView thêm ổ cắm

Bây giờ tôi muốn truy cập TableView trong số ViewController, làm cách nào tôi có thể tạo lối thoát cho điều đó?

Tôi đã cố thêm Chế độ xem vùng chứa làm cửa hàng nhưng tôi không thể truy cập vào số TableViewController được nhúng.

enter image description here

Trả lời

11

Bạn không thể làm cho một cửa hàng trực tiếp vì chế độ xem bảng nằm trong một cảnh khác (trình điều khiển chế độ xem), nhưng bạn có thể truy cập vào chế độ xem bảng khi bạn có tham chiếu đến phiên bản UITableViewController. Có một vài cách khác nhau để làm điều đó.

Trước tiên, bạn có thể sử dụng thuộc tính childViewControllers của lớp con UIViewController của mình. Nếu bạn biết rằng chỉ có một con duy nhất thì bạn có thể truy cập nó trực tiếp, nếu không bạn cần phải xác định đó là con đúng, nói bằng cách lặp qua mảng.

let myTableViewController = self.childViewControllers[0] as! UITableViewController 
let theTableView = myTableViewController.tableView 

Tùy chọn thứ hai là truy cập vào UITableViewController trong khoảng cách nhúng. Nếu bạn bấm vào phân đoạn nhúng trong bảng phân cảnh của bạn, bạn có thể cho nó một định danh giống như bất kỳ phân đoạn nào khác. Sau đó, bạn có thể thực hiện prepareForSegue và lấy nhúng UITableViewController dụ -

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "tableviewEmbed") { 
     let myTableViewController = segue.destinationViewController as! UITableViewController 
     let theTableView = myTableViewController.tableView 
    } 
} 

Cá nhân, tôi thích cách tiếp cận thứ hai này như tôi nghĩ rằng đó là 'sạch'

+0

Thứ hai cách tiếp cận đá! – TalL

1

Tạo ổ cắm trong con View Controller và truy cập nó bằng cách sử self.childViewControllers.lastObject (giả sử bạn chỉ có một đứa trẻ, nếu không sử dụng objectAtIndex :)