2016-05-22 11 views
0

zu setzen Ich habe eine benutzerdefinierte UITableView Cell als Xib.Richtiger Weg, Delegat von ScrollView in UITableViewCell

Ich habe eine Scroll-Ansicht darin genommen.

Ich weiß, wie man den Delegierten setzt, aber ich habe Verwirrung. Sie sind zwei von dies zu tun.

Ich weiß nicht, was das beste ist und wie ich entscheiden muss, welchen Weg ich wählen muss.

1 Way: Einstellung Delegierter UITableViewCell

enter image description here

+0

Bildlauf ist der Super Klasse der Tabellenansicht. Die Tabellenansicht ist eine Unterklasse der Bildlaufansicht, so dass Sie keinen Bildlauf innerhalb der Tabellenansicht hinzufügen müssen. – user3182143

+0

Ich muss Bildergalerie in Mulitple UItable View-Zellen anzeigen – Dalvik

Antwort

0

In einem Tableview: Um

enter image description here

2 Way Delegierten Dateien Besitzer eingestellt Zelle der Delegat von scrollview wird immer auf UITableViewCell gesetzt

Das bedeutet, dass Ihr zweiter Schritt funktioniert. Lassen Sie mich wissen, wenn Sie irgendwelche Schwierigkeiten finden.

0

Die Auswahl hängt davon ab, was die Delegate-Funktion für die innere Bildlaufansicht tun muss. Es ist einfacher, den Delegaten auf die benutzerdefinierte Zelle zu verweisen und die inneren Scroll-Ereignisse dort zu behandeln.

Aber wenn die Handhabung dieses inneren Scrollens eine Menge Daten und Logik vom View-Controller erfordert, dann richten Sie den Delegaten auf den VC. Damit das funktioniert, müssen wir wissen, dass das Bildlaufereignis von einer inneren Bildlaufansicht und nicht von der Tabelle stammt, und wir wahrscheinlich die Zeile benötigen, in der der Bildlauf stattfand:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    // if the table view's delegate points here (likely), then to distinguish... 
    if (scrollView != self.tableView) { 
     // one of the scroll views in the table, but which one? 
     NSIndexPath = [self indexPathContainingView:scrollView]; 
     // here we know that horizontal scrolling happened on indexPath.row 
    } 
} 

// return the indexPath of the tableView cell containing a view 
- (NSIndexPath *)indexPathContainingView:(UIView *)view { 
    while(view && ![view isKindOfClass:[UITableViewCell self]]) 
     view = view.superview; 
    return [self.tableView indexPathForCell:(UITableViewCell *)view]; 
}