2016-08-25 3 views
0

ich Stack-Überlauf gesucht (Getting row of UITableView cell on button press) und habe viele Lösungen, die Leute behaupten zu arbeiten, aber ich habe noch finden die perfekte Lösung gefunden. Ich versuche, den indexPath des nächsten/vorherigen UITextField innerhalb meiner UITableView mit einem CGPoint zu erhalten, so dass ich zu ihm scrollen und ihn als Ersthelfer machen kann. Meistens ist es korrekt, aber wenn mein Textfeld ein vorhergehendes Feld in der UITableView in einem anderen Bereich ist, bekomme ich ein falsches Ergebnis.IndexPath für nächste/vorherige UITextField innerhalb UITableView

Hier ist der Code (Hinweis: nextTxtField ist ein UIView):

[NSIndexPath indexPathForRow:row inSection:section]; 
[NSIndexPath indexPathWithIndex:index]; 
[NSIndexPath indexPathForItem:item inSection:section]; 

Sobald Sie das bekommen:

CGPoint point = [nextTxtField convertPoint:CGPointZero toView:tableView];   
NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:point]; 

[UIView animateWithDuration:0.03 delay:0.0 options:0 animations:^{ 
      [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO]; 
     } completion:^(BOOL finished) { 
      dispatch_async(dispatch_get_main_queue(), ^(void){ 
       [nextTxtField becomeFirstResponder]; 
      }); 
     }]; 

Antwort

0

Sie die indexPath von Zeile/Element der UITableView durch den Aufruf erhalten kann indexPath, erhalten Sie die UITableViewCell von:

[_tableView cellForRowAtIndexPath:indexpath]; 

Es gibt eine UITableViewCell zurück. TypeCast es zu Ihrer Zellklasse (sicher sein).

Dann können Sie halten, nextTxtField greifen wie:

[((YourCellClass *) cell).nextTxtField becomeFirstResponder] 

nach UITableView Scrollen zu diesem indexPath.

+0

Ich brauche die indexPath zu bekommen, wenn ich nur die Tabellenansicht und die UITextField gegeben werde. Dies funktioniert insbesondere dann nicht, wenn die UITableViewCell nicht sichtbar ist. CellForRowAtIndexPath gibt wegen der Wiederverwendung von Zellen nil zurück. – HawkEye1194

+0

Wie erhalten Sie eine uitextfield-Instanz, die in der uitableviewcell mit einer Wiederverwendungskennung enthalten ist? Wie greifen Sie auf Uitextfield? –

+0

Tut mir leid, ich mache keine Wiederverwendung von Zellen. Ich zuteile die Zellen, weil ich musste, mein Tisch wird nicht so groß sein. Also habe ich Verweise auf die Steuerelemente in einem Array. – HawkEye1194

Verwandte Themen