我需要通過點擊一個按鈕,是UITableView
內的字符串從一個tableview
轉移到另一個。我知道如何通過一個按鈕來獲得indexPath
,像這樣:使用委託將數據從一個TableView中轉移到另一個
let button = sender as MyButton
let view = button.superview!
let cell = view.superview as! MyTableViewCell
let indexPath = tableView.indexPathForCell(cell)
上面的代碼工作,以獲得細胞的indexpath點擊一個按鈕,zhowever爲了傳輸數據,我不得不使用prepareForSegue
。所以自然我試着用準備for segue並從AnyObject
改變sender
?到MyButton
然後我收到一條錯誤消息,說「覆蓋方法與選擇器prepareforsegue具有不兼容類型」。
我搜索並閱讀關於迅速和delegates
如何將這些能幫助,我試圖通過MakeAppPie這裏給出了答案:
Delegates in swift?但它並沒有爲我工作。
有什麼辦法結合起來,賽格瑞和我上面的代碼的準備?我試過這個,但是它導致了我剛纔提到的錯誤信息:
override func prepareForSegue(segue: UIStoryboardSegue, sender: MyButton) {
let myVC = segue.destinationViewController as? CommentsViewController
let usender:AnyObject = sender!
let button = usender as? MyButton
let view = button.superview!
myVC!.title = button.titleForState(.Normal)
let cell = view.superview as! QuestionCell
let indexPath = tableView.indexPathForCell(cell)
println(self.short_descriptionArray)
var row = self.tableView.indexPathForSelectedRow()?.row
myVC!.nameToGet = short_descriptionArray[row!]
}
這是更接近,但仍不完全它。唯一的問題是我需要傳輸的字符串在視圖控制器中。它是一個數組中的索引,並且該數組僅存在於視圖控制器中。在該溶液中的字符串是在這裏: @IBAction FUNC buttonTapped(發件人:AnyObject){ 令字符串= 「」 self.delegate.actionButtonTapped(字符串) } 因此字符串仍然不能轉移 –
joey
@joey,你可以添加一個屬性到你的單元類,並在cellForRowAtIndexPath方法中分配它。通常您需要將對象傳遞給UITableViewCell類,並在單元類中進行一些映射。所以你可以在單元格內獲得對象(或對象屬性)。 – AlexZd