2012-05-07 33 views
0

我有一個UItableView可以繼續使用不同的視圖控制器。我使用的是一個UITapGestureRecognizer,它繼承了tableView。這個segue起作用,但我希望它繼續回到最初選擇的表格行的tableView。我該如何做到這一點?在選定的單元格行處返回TableView

編輯:編輯的代碼

- (void)viewWillAppear:(BOOL)animated { 

appDelegate = [[UIApplication sharedApplication] delegate]; 
NSLog(@"%@", NSStringFromCGPoint(appDelegate.testCGPoint)); 

[self.tableView setContentOffset:appDelegate.testCGPoint animated:YES]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

if ([segue.identifier isEqualToString:@"ShowDetail"]) { 

    appDelegate.testCGPoint = [self.tableView contentOffset]; 

} 
} 

回答

1

您應該保存內容表視圖成偏移值的。
float tableContentOffset;
然後,將偏移量保存到該浮點數中。 最後,當你需要設置表格視圖的內容偏移時,
[self.tableView setContentOffset:CGPointMake(0,tableContentOffset)animated:YES];

+0

這段代碼應該放在視圖控制器的viewWillAppear:方法中。 – eazimmerman

+0

我用CGPoint代替float,它不適合我。雖然,我是新手,所以我可能在這裏做了不止一件事。請參閱上面的編輯代碼。 – mnort9

+0

請看我的第二個答案!你的問題可能在於訪問tableContentOffset變量! – wayway

0

所以,在你的代碼中,你已經創建了一個CGPoint。但是,創建存在於prepareForSegue方法中。因此,您無法訪問該方法之外的點!解決方案是在頭文件中創建CGPoint。
CGPoint tableContentOffest;
然後在你的prepareForSegue方法中,你所要做的就是設置表的偏移值。不要創建一個新的CGPoint。
此外,在您的代碼[vc.tableView setContentOffset:_tableContentOffset animated:YES];你可能想用[vc.tableView setContentOffset:tableContentOffset animated:YES]來設置它;而不是_tableContentOffset。 希望這有助於!

+0

我是否必須在ViewController類或其他類中創建'CGPoint tableContentOffset'?編譯器不能識別DetailViewController中的變量。我有'CGPoint tableContentOffset'設置在我的ViewController頭@interface {} – mnort9

+0

好吧,我現在有它的工作。我完全誤解了'self.tableView ...'部分,現在我意識到如果在我的detailViewController中使用此代碼,則不需要任何代碼。一切都在我的主要風投中。但是,當我將'CGPoint tableContentOffset放到我的頭文件中時,我無法正常工作。好像它正在重新設置或者當視圖重新出現時沒有設置。相反,我在AppDelegate中設置CGPoint並在VC中調用它。這似乎工作,但我不知道爲什麼我無法使用你的方法。 – mnort9

+0

此外,它現在有效,但setContentOffset被延遲。我再次編輯了我的代碼。感謝你的幫助。 – mnort9

相關問題