Tôi có một lớp con tùy chỉnh UITableViewCell
và xib liên quan của nó. Tôi có một số UILabel
và UIButton
trong ô này và tôi đã kết nối thao tác bên trong của nút với lớp con.Lấy IndexPath từ bên trong một lớp con UITableViewCell trong Swift
Điều tôi cần là khi nút đó trong ô được nhấn, để có được đường dẫn chỉ mục của ô có nút đó. Và có thể gửi lại cho bộ điều khiển xem thông qua một đại biểu hoặc một cái gì đó.
Vì tôi ở trong lớp con UITableViewCell
, tôi không thể sử dụng giải pháp như this vì tôi không có tham chiếu đến chế độ xem bảng từ bên trong lớp con của ô. Khi điều tra thêm, tôi tìm thấy giải pháp another và tôi đã triển khai nó trong Swift như thế này.
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")
}
}
Nhưng khi tôi gõ vào nút này, nó bị treo với một thông báo lỗi nói rằng cast động Swift thất bại.
Bất kỳ ý tưởng nào có vấn đề với mã của tôi?
Hoặc tôi mở cho bất kỳ đề xuất nào khác cho phép tôi đạt được kết quả mong muốn theo bất kỳ cách nào khác.
Cảm ơn bạn.
Âm thanh như bạn cần một đại biểu: http://stackoverflow.com/questions/24099230/delegates-in-swift – ullstrm
Lý do để bạn biết indexPath liên quan là gì? 'println (" indexPath? .row ")' rõ ràng không phải là một lý do thực sự. Mô hình đằng sau tất cả điều đó là gì? –
@POB Lý do là tôi đã đưa ra các phương pháp nguồn dữ liệu của tableview và đặt chúng vào một lớp tái sử dụng riêng biệt như được mô tả trong [this] (http://www.objc.io/issue-1/lighter-view-controllers. html) bài viết. Ô tuỳ chỉnh của tôi có một nút và bây giờ tôi cần lấy đường dẫn chỉ mục của ô mà nút được nhấn. – Isuru