2009-05-12 14 views

Antwort

8

Wenn Sie wirklich wollen, eine benutzerdefinierte Schaltfläche OHNE Subklassifizieren hinzufügen möchten, fügen Sie einfach die Taste, um die content der Zelle:

[cell.contentView addSubview:customButton]; 

Sie können alle Eigenschaften der Schaltfläche fest: Rahmen, Ziel, Wähler, etc ... Ad verwendet dann den obigen Aufruf, um es der Zelle hinzuzufügen.

UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
customButton.frame=//whatever 
[customButton setImage:anImage forState:UIControlStateNormal]; 
[customButton setImage:anotherImage forState:UIControlStateHighlighted]; 
[customButton addTarget:self action:@selector(delete) forControlEvents: UIControlEventTouchUpInside]; 
//yadda, yadda, ..... 

Sie können Tag setzen auch

customButton.tag = 99999; 

So können Sie es später finden:

UIButton *abutton = (UIButton*) [cell.contentView viewWithTag:99999]; 

Sie müssen entscheiden, wenn die Schaltfläche hinzufügen, vielleicht auf Zellenauswahl, vielleicht im Bearbeitungsmodus ... einfach den Code in die Delegate-Methode deiner Wahl legen.

1

Wenn der einzige Zweck der Schaltfläche das Löschen ist, sollten Sie in UITableViewDataSource suchen, die eine Methode namens - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath hat. Implementieren Sie es wie folgt:

- (BOOL)tableView:(UITableView *)tableView 
canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return YES; 
} 

Und dann implementieren:

- (void)tableView:(UITableView *)tableView 
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Database removal code goes here... 
} 

diese Methoden zu verwenden, lassen Sie Ihre UITableViewController implementieren das UITableViewDataSource Protokoll von etwas zu tun, wie:

MyClass : UITableViewController <UITableViewDataSource> 

in Ihrem Kopf Datei, und vergessen Sie nicht, die Datenquelle des ViewControllers auf self zu setzen.

+0

Was ist mit Button Ich möchte all diese Dinge tun, wenn ich auf eine benutzerdefinierte Schaltfläche klicke und die Schaltfläche muss ohne Verwendung von Interface Builder und benutzerdefinierte Zelle erstellt werden. –

+0

Die canEditRowAtIndexPath-Methode fügt automatisch eine Löschschaltfläche für jede Zeile im Bearbeitungsmodus hinzu. Probieren Sie es aus :) – tmadsen

+0

aber ich möchte es mit einer benutzerdefinierten Schaltfläche tun. –

Verwandte Themen