У меня есть подкатегория UITableViewCell
и связанный с ним xib. У меня есть UILabel
и UIButton
в этой ячейке, и я подключил сенсорный экран к подклассу внутри кнопки.Получите IndexPath из подкласса UITableViewCell в Swift
Что мне нужно, когда эта кнопка в ячейке используется, чтобы получить индексный путь ячейки, у которой есть эта кнопка. И, возможно, отправьте его обратно в контроллер просмотра через делегат или что-то в этом роде.
Поскольку я внутри подкласса UITableViewCell
, я не могу использовать такое решение, как this, потому что у меня нет ссылки на представление таблицы внутри подкласса ячейки. После дальнейшего исследования я нашел решение another, и я реализовал его в Swift следующим образом.
import UIKit
class ContactCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
selectionStyle = .None
}
@IBAction func callButtonPressed(sender: UIButton) {
let indexPath = (self.superview as UITableView).indexPathForCell(self)
println("indexPath?.row")
}
}
Но когда я нажимаю на кнопку, она падает с сообщением об ошибке говоря Swift динамическое приведение не удалось.
Любая идея, что не так с моим кодом?
Или я открыт для любых других предложений, которые позволили бы мне достичь желаемого результата любым другим способом.
спасибо.
Похоже, вам нужен делегат: http://stackoverflow.com/questions/24099230/delegates-in-swift – ullstrm
В чем причина того, что вы знаете связанный indexPath? 'println (" indexPath? .row ")', очевидно, не является реальной причиной. Какова модель за всем этим? –
@POB Причина в том, что я извлек методы источника данных tableview и поместил их в отдельный многоразовый класс, как описано в [this] (http://www.objc.io/issue-1/lighter-view-controllers. html). У моей пользовательской ячейки есть кнопка, и теперь мне нужно получить индексный путь ячейки, в которую нажата кнопка. – Isuru