2017-05-26 15 views
5

Tôi làm việc với 3 nhanh cho macOS và tôi có một câu hỏi chung. Trong Storyboard của tôi là hai View Controller với một tableview cho mỗi View Controller.Các lớp khác nhau làm việc cùng nhau

Ví dụ: View Controller A> VC_A.class View Controller B> VC_B.class

Cả Xem Bộ xử lý là những yếu tố của một View Controller Split. bây giờ tôi muốn đặt một phần tử hàng mẫu VC A đến VC B bằng cách kéo và thả. điều này hoạt động tốt, nếu cả hai VC đều ở trong một lớp.

nhưng bây giờ tôi muốn chia nó giống như ví dụ dưới đây (VC_A và VC_B.class)

nhưng làm thế nào tôi có thể kiểm soát tblview IBOutlet của VC_A trong VC_B.class?

+0

Ý bạn là "kiểm soát"? Tại sao bạn cần? Ví dụ: –

+0

. tôi muốn thêm một hàng mới vào tableview của VC_A từ lớp VC_B – Ghost108

+0

fore biết thêm chi tiết: Tôi đã thử hướng dẫn này: http://www.knowstack.com/swift-nstableview-drag-drop-in/ cả hai tableviews đang ở một bộ điều khiển xem và sử dụng một lớp. tôi muốn nhận ra rằng cả hai dạng xem bảng đều nằm trong các bộ điều khiển chế độ xem khác nhau (dạng xem phân tách), không phải mã trong hai lớp khác nhau – Ghost108

Trả lời

4

Bạn có thể sử dụng đại biểu và giao thức cho việc này. Thiết lập một lớp giao thức với giao diện của bạn cho bảng chỉnh sửa ví dụ

protocol EditableTableView { 
    func insertCell() 
} 

Đối với cả hai ViewControllers của bạn, cài đặt chúng phải tuân theo giao thức này, thực hiện chức năng insertCell và cũng thêm một con trỏ đại biểu.

class ViewControllerA : EditableTableView { 

    func insertCell() { 
    ... add your code to insert a cell into VC A... 
    } 

    weak var otherTableViewDelegate : EditableTableView? 
} 

class ViewControllerB : EditableTableView { 

    func insertCell() { 
    ... add your code to insert a cell into VC B... 
    } 

    weak var otherTableViewDelegate : EditableTableView? 
} 

Trong cha mẹ của mình được chia VC bạn có thể thiết lập các con trỏ đại biểu để họ trỏ đến bộ điều khiển xem khác

viewControllerA.otherTableViewDelegate = viewControllerB 
viewControllerB.otherTableViewDelegate = viewControllerA 

Bây giờ bất cứ khi nào bạn muốn chèn một tế bào trong bộ điều khiển khác mà bạn có thể gọi

self.otherTableViewDelegate?.insertCell() 
+0

và vị trí của mỗi khung nhìn dưới dạng bảng IBoutlet ở đâu? – Ghost108

+0

Sẽ có một trong mỗi VC tôi đoán. Tại sao bạn cần IBOutlet? Có phải chỉ để kết nối với thiết lập chế độ xem bảng trong Storyboard – Spads

+0

có, để kết nối với bảng phân cảnh – Ghost108

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