Delegasi adalah cara untuk pergi.
Seperti yang terlihat dengan jawaban lain menggunakan tampilan mungkin sudah ketinggalan zaman. Siapa tahu besok mungkin ada bungkus lain dan mungkin perlu digunakan cell superview]superview]superview]superview]
. Dan jika Anda menggunakan tag, Anda akan mendapatkan nomor n jika kondisi lain untuk mengidentifikasi sel. Untuk menghindari semua itu mengatur delegasi. (Dengan melakukan itu, Anda akan membuat kelas sel yang dapat digunakan kembali. Anda bisa menggunakan kelas sel yang sama dengan kelas dasar dan yang harus Anda lakukan hanyalah menerapkan metode delegasi.)
Pertama kita membutuhkan antarmuka (protokol) yang akan digunakan oleh sel untuk berkomunikasi (mendelegasikan) klik tombol. ( Anda dapat membuat file .h terpisah untuk protokol dan termasuk di dalam pengontrol tampilan tabel dan kelas sel khusus ATAU tambahkan saja di kelas sel kustom yang akan tetap disertakan dalam pengontrol tampilan tabel )
@protocol CellDelegate <NSObject>
- (void)didClickOnCellAtIndex:(NSInteger)cellIndex withData:(id)data;
@end
Sertakan protokol ini di pengontrol tampilan sel dan tabel kustom. Dan pastikan pengontrol tampilan tabel mengonfirmasi protokol ini.
Di sel khusus buat dua properti:
@property (weak, nonatomic) id<CellDelegate>delegate;
@property (assign, nonatomic) NSInteger cellIndex;
Dalam UIButton
delegasi IBAction, klik: ( Hal yang sama dapat dilakukan untuk tindakan apa pun di kelas sel kustom yang perlu didelegasikan kembali untuk melihat pengontrol )
- (IBAction)buttonClicked:(UIButton *)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOnCellAtIndex:withData:)]) {
[self.delegate didClickOnCellAtIndex:_cellIndex withData:@"any other cell data/property"];
}
}
Di pengontrol tampilan tabel cellForRowAtIndexPath
setelah mengeluarkan sel, atur properti di atas.
cell.delegate = self;
cell.cellIndex = indexPath.row; // Set indexpath if its a grouped table.
Dan mengimplementasikan delegate di controller tampilan tabel:
- (void)didClickOnCellAtIndex:(NSInteger)cellIndex withData:(id)data
{
// Do additional actions as required.
NSLog(@"Cell at Index: %d clicked.\n Data received : %@", cellIndex, data);
}
Ini akan menjadi pendekatan yang ideal untuk mendapatkan tindakan tombol sel kustom di pengontrol tampilan tabel.