我有一個UITableView
的自定義單元格。當用戶點擊單元中的按鈕時,用戶必須從當前的ViewController1
導航到ViewController2
。我已經定義了自定義單元類中的按鈕動作。但需要回電ViewController1
。快速關閉可以用於2級之間的通信嗎?
我嘗試使用closure類似於我們如何在目標C中使用塊。它在同一類中使用時工作正常。但在兩個不同的類中使用時會出錯。
我有一個UITableView
的自定義單元格。當用戶點擊單元中的按鈕時,用戶必須從當前的ViewController1
導航到ViewController2
。我已經定義了自定義單元類中的按鈕動作。但需要回電ViewController1
。快速關閉可以用於2級之間的通信嗎?
我嘗試使用closure類似於我們如何在目標C中使用塊。它在同一類中使用時工作正常。但在兩個不同的類中使用時會出錯。
您需要在那裏使用委託協議。
例子:協議發送UserItem
當事情發生在cell
:
protocol TappedUserDelegate: class {
func userInfoTapped(_ tappedUser: UserItem?)
}
在你controller
:
extension Controller: TappedUserDelegate {
func userInfoTapped(_ user: UserItem?) {
// user is tapped user in cell
}
}
在你tableView
FUNC:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// ........
cell.delegateUserTaps = self // for user info taps to perform segue
// ........
}
在您的自定義cell
:
class CustomCell: UITableViewCell {
weak var delegateUserTaps: TappedUserDelegate? // for sending user info
// ........
func userInfoTapped() {
delegateUserTaps?.userInfoTapped(userItem) // <- send data to controller
}
}
當userInfoTapped
將被調用,您的控制器功能將與該用戶進行。
我給你一個主意。
希望它有幫助
謝謝。因爲我沒有15點聲望,所以我無法提升你的答案。 – ABM
@ABM如果有幫助,你可以接受。按寒鴉 –
發表你已經嘗試過(一些代碼)。有可能在2個VC之間通過關閉。 – Brduca
您需要使用協議。我將很快發佈答案 –
是的,使用代表和協議或通知交替! – LinusGeffarth