Leider wird diese Methode nur aufgerufen, wenn der interne Schaltflächentyp, der bei Verwendung eines der vordefinierten Typen angegeben wird, getippt wird. Um Ihr eigenes Zubehör zu verwenden, müssen Sie Ihr Zubehör als Schaltfläche oder andere UIControl-Unterklasse erstellen (ich würde die Verwendung einer Schaltfläche empfehlen-buttonWithType:UIButtonTypeCustom
und das Bild der Schaltfläche festzulegen, anstatt eine UIImageView zu verwenden).
Hier sind einige Dinge, die ich in Outpost verwende, wodurch die Standard-Widgets so angepasst werden (nur geringfügig, dass sie unserer blaugrünen Farbe entsprechen), dass ich meine eigene UITableViewController-Zwischenunterklasse erstellt habe, um den Dienstprogrammcode für alle anderen zu verwendenden Tabellenansichten zu speichern (sie sind jetzt Unterklassen) OPTableViewController).
Erstens gibt diese Funktion mithilfe unserer benutzerdefinierten Grafik eine neue Schaltfläche zur Offenlegung von Details zurück:
- (UIButton *) makeDetailDisclosureButton
{
UIButton * button = [UIButton outpostDetailDisclosureButton];
[button addTarget: self
action: @selector(accessoryButtonTapped:withEvent:)
forControlEvents: UIControlEventTouchUpInside];
return ( button );
}
Die Schaltfläche ruft diese Routine auf, wenn sie fertig ist, und speist dann die Standardroutine UITableViewDelegate für zusätzliche Schaltflächen:
- (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];
}
Diese Funktion lokalisiert die Zeile, indem sie die Position in der Tabellenansicht einer Berührung aus dem von der Schaltfläche bereitgestellten Ereignis abruft und die Tabellenansicht an diesem Punkt nach dem Indexpfad der Zeile fragt.