2010-05-10 82 views
0

我可以發佈代碼,但我不太確定從哪裏開始。我有一個UITableView自定義單元格,在三級UINavigationView方案的中間層。當我深入底層並查看有關數據的詳細信息時,請使用左上角的後退按鈕,我的表視圖會一直滾動到頂部,而不是滾動到最後一次看到它的位置。我應該在哪裏看這個?UITableView不記得它的滾動位置

編輯:

這裏是在EventsTableViewController代碼加載EventsDetailViewController的一個實例,並將它推導航控制器上:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    NSMutableArray *events = [DataManager sharedDataManager].eventList; 

    Event *selectedEvent = [events objectAtIndex:[indexPath row]]; 
    EventsDetailViewController *detailController = [[EventsDetailViewController alloc] initWithNibName:@"EventsDetailView" bundle:nil]; 
    [detailController loadEvent:selectedEvent]; 

    MyAppDelegate *del = (MyAppDelegate *)[UIApplication sharedApplication].delegate; 
    [del.navigationController pushViewController:detailController animated:YES]; 
    [detailController release]; 

} 

沒有什麼在我的EventsTableViewController有關重裝的表格,就我可以看到 - 我沒有實現viewWillAppear或viewDidLoad或任何這些。

+0

你可以發佈代碼從哪裏你推底層到導航控制器? – MrHen 2010-05-10 20:54:04

回答

0

無論何時我碰到這個級別的導航,我都意外地實例化了我的表視圖的新副本。現在全部修好了,這不再是問題了。

2

你有沒有機會重新加載你不該在的桌子?例如,在ViewWillAppear方法中?

+0

在我的表格控制器中?不,我沒有實現任何這些viewWill ...或viewDid ...方法。 – 2010-05-11 12:15:03

0

我有一個非常類似的問題。當我去chatView,這是一個屬於navigationController的UIViewController,並且有一個tableView作爲子視圖,然後我滾動到某個點,然後我回去,然後我回到chatView,它開始於再次上。我在chatView的loadView中分配tableView,所以每當我回來時,tableView都會變得流暢。但是,這不是這個標準嗎?我如何總是像iPhone Messages應用一樣滾動到底部並在底部顯示滾動條几秒鐘?

下面的代碼:

http://github.com/acani/acani-chat/blob/master/Lovers2/Classes/ChatViewController.m#L184

謝謝!

馬特

+0

嘗試把你的表創建業務放在'-viewDidLoad'而不是'-loadView'中。還要檢查UITableView中的程序化滾動功能,可以顯式滾動到底部單元格。 – 2010-08-30 12:01:23

0

你在幹什麼:

[self presentViewController:navController animated:YES completion:nil]; 

其中自是tableviewcontroller?試試這個:

[self.navigationController presentViewController:navController animated:YES completion:nil]; 
+0

我有一個類似的問題,只是認爲這將有助於我的解決方案。 – ajayjapan 2011-12-02 21:09:22