2010-05-10 56 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