Gedankenexperiment: Verwenden Sie drei Tabellenansichten, aber verwenden Sie dieselbe Datenquelle/denselben Delegaten. Verdrahten Sie es so, dass immer dann, wenn eine Ansicht scrollt (d. H. Durch –scrollViewDidScroll:
), die anderen Ansichten mit -setContentOffset
manuell in die entsprechende Position gerollt werden. Sie sollten jedoch vor möglichen Rundrufen aufpassen. Ich kann nicht garantieren, dass das funktioniert, aber das ist so nah wie möglich, dass ich mir vorstellen kann.
Sie können auch zusätzliche Zeilen oben und unten für bestimmte Ansichten hinzufügen, wenn Sie möchten, dass die Ansicht ganz links nach unten scrollen kann, oder die Ansicht ganz rechts, um nach oben zu scrollen.
Edit: In den meisten Fällen ist es so einfach wie es scheint. Ich habe es einfach ausprobiert und war nicht so schlecht. Es gibt einige kleine Macken, auf die Sie achten müssen, einschließlich der zirkulären Aufrufe und der Verlangsamung von Scrollviews.
Für den Kreis Anrufe mich bereits erwähnt, konnte ich meinen Weg um es durch den folgenden Code:
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
tableView1.delegate = nil;
tableView2.delegate = nil;
tableView3.delegate = nil;
scrollView.delegate = self;
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
tableView1.delegate = self;
tableView2.delegate = self;
tableView3.delegate = self;
}
Wie für die Verzögerung danach, es ist nicht so sehr, dass die anderen Ansichten werden zusammen mit ihnen nicht verzögern , aber die Ansichten wirken ein wenig wackelig, wenn Sie eine der anderen berühren, während sie langsamer werden. Ich habe es in diesem Fall nicht versucht, um zu sehen, ob es 100% funktioniert, aber Sie sollten versuchen, von here zu codieren, um die Verzögerung in ihren Spuren zu stoppen, wenn Sie anfangen, es wieder zu ziehen.
Dies ist die Art von UI-Design, die Apple gerne zurückweisen würde. Trete leicht. –