Ne yazık ki, önceden tanımlanmış türlerden birini kullandığınızda sağlanan dahili düğme türüne dokunulmadığı sürece bu yöntem çağrılmaz. Kendinizinkini kullanmak için, aksesuarınızı bir düğme veya diğer UIControl alt sınıfı olarak oluşturmanız gerekir ( -buttonWithType:UIButtonTypeCustom
bir UIImageView kullanmak yerine düğmenin görüntüsünü kullanarak ve ayarlayarak bir düğme öneriyorum ).
İşte Outpost'ta kullandığım bazı şeyleri, diğer tüm tablo görünümlerinin kullanması için yardımcı program kodunu tutmak için kendi UITableViewController aracı alt sınıfımı yaparak yaraladığım standart widget'ların (sadece biraz, deniz mavisi renklendirmemizle eşleşecek şekilde) özelleştirmesini sağlayan bazı şeyler var (şimdi alt sınıflar) OPTableViewController).
İlk olarak, bu fonksiyon özel grafiğimizi kullanarak yeni bir detay açıklama düğmesi döndürür:
- (UIButton *) makeDetailDisclosureButton
{
UIButton * button = [UIButton outpostDetailDisclosureButton];
[button addTarget: self
action: @selector(accessoryButtonTapped:withEvent:)
forControlEvents: UIControlEventTouchUpInside];
return ( button );
}
Düğme tamamlandığında bu rutini çağıracak ve daha sonra aksesuar düğmeleri için standart UITableViewDelegate rutini besleyecektir:
- (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];
}
Bu işlev, düğmenin sağladığı olaydan bir dokunuşun tablo görünümündeki konumunu alarak ve o noktadaki satırın dizin yolu için tablo görünümü sorarak satırı bulur.