2010-12-28 5 views

Antwort

4

Sie benötigen, um Ihre UIViewController das Ereignis empfangen durch eine ziel Aktion aus dem UIButton zum UIViewController, wie dies zu schaffen:

[button addTarget:self action:@selector(cellButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

Dann in Ihrer UIViewController ‚s Aktion Methode können Sie verwenden die UITableView s indexPathForCell: Methode die richtige NSIndexPath zu erhalten:

- (void) cellButtonClicked: (id) sender { 
    UIButton *btn = (UIButton *) sender; 
    UITableViewCell *cell = (UITableViewCell *) [[btn superview] superview]; 
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
    //do something with indexPath... 
} 
+0

Ich bekomme den Indexpfad korrekt .... tank u Jacob – Hari1251

+1

Diese Methode funktioniert nicht mehr wie vorgesehen in iOS 7, da es jetzt mehr Ansichten in UITableViewCells gibt. Ich habe UITableViewCellScrollView's anstelle von Zellen mit diesem Code in regelmäßigen Abständen zurückgegeben. – Will

0

zustimmen Will, Sie haben t o iterieren in iOs7

1

Dies ist eine Alternative, die nicht umfällt, wenn Apple die Ansichtshierarchie ändert. Grundsätzlich finden Sie den Ursprung der Schaltfläche im Koordinatensystem der Tabellenansicht. Sobald Sie wissen, dass Sie die NSIndexPath der Reihe finden können, die die point in ist.

- (void)buttonTapped:(UIButton *)button 
{ 
    CGPoint buttonOrigin = [button convertPoint:CGPointZero toView:self.tableView]; 
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonOrigin]; 
} 
0

können Sie erreichen, dass mit einer einfacheren Lösung. In den meisten Fällen repräsentiert jede Zelle ein Objekt innerhalb eines Arrays. Sie müssen daher in der benutzerdefinierten Zellenklasse eine Eigenschaft definieren, die eine Zellen-ID (in Ihrem Array) oder die Zellen-ID darstellt, die auf dem Server definiert ist DB und wenn die Schaltfläche angetippt wurde, können Sie es leicht über self.id - ID die Cell ID Eigenschaft erhalten.

Verwandte Themen