Sayangnya metode itu tidak dipanggil kecuali tipe tombol internal yang disediakan saat Anda menggunakan salah satu tipe yang telah ditentukan diketuk. Untuk menggunakan milik Anda sendiri, Anda harus membuat aksesori sebagai tombol atau subkelas UIControl lainnya (saya akan merekomendasikan tombol menggunakan -buttonWithType:UIButtonTypeCustom
dan mengatur gambar tombol, daripada menggunakan UIImageView).
Berikut adalah beberapa hal yang saya gunakan dalam Outpost, yang mengkustomisasi cukup dari widget standar (hanya sedikit, untuk mencocokkan pewarnaan teal kami) yang akhirnya saya lakukan dengan menggunakan subclass perantara UITableViewController saya sendiri untuk menyimpan kode utilitas untuk semua tampilan tabel lain untuk digunakan (mereka sekarang subklas OPTableViewController).
Pertama, fungsi ini mengembalikan tombol pengungkapan detail baru menggunakan grafik khusus kami:
- (UIButton *) makeDetailDisclosureButton
{
UIButton * button = [UIButton outpostDetailDisclosureButton];
[button addTarget: self
action: @selector(accessoryButtonTapped:withEvent:)
forControlEvents: UIControlEventTouchUpInside];
return ( button );
}
Tombol akan memanggil rutin ini setelah selesai, yang kemudian mengumpankan rutin UITableViewDelegate standar untuk tombol aksesori:
- (void) accessoryButtonTapped: (UIControl *) button withEvent: (UIEvent *) event
{
NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint: [[[event touchesForView: button] anyObject] locationInView: self.tableView]];
if ( indexPath == nil )
return;
[self.tableView.delegate tableView: self.tableView accessoryButtonTappedForRowWithIndexPath: indexPath];
}
Fungsi ini menempatkan baris dengan mendapatkan lokasi dalam tampilan tabel dari sentuhan dari acara yang disediakan oleh tombol dan meminta tampilan tabel untuk jalur indeks baris pada saat itu.