关闭一个视图控制器弄乱了UIScrollView的内容
问题描述:
我有FirstViewController,它包含一个UIScrollView的UIView,并且UIScrollView中有一个UITableView。 UITableView禁用了滚动功能,我只增加了UIScrollView的contentSize,以便能够看到完整的UITableView。关闭一个视图控制器弄乱了UIScrollView的内容
___________________________________
| |
| |
| |
-----------Various content---------
| |
| |
| |
___________________________________
| |
| |
| |
| |
| UITableView |
| |
| |
| |
|_________________________________|
当我在我的UIScrollView一个点,使得contentOffset =/= 0和I按在UITableView的小区我模态呈现一个新的控制器(SecondViewController)。这工作正常。当我关闭SecondViewController时,FirstViewController中的内容会混乱。
UITableView初始设置为使其原点位于屏幕中间(垂直)。当我关闭SecondViewController时,UITableView肯定会在屏幕中间出现它,但UITableView上方的内容会在UIScrollVIew中以contentOffset的值(推送SecondViewController之前的值)推送到UIScrollVIew中。
___________________________________
| |
-----------Various content---------
| |
| |
| |
| |
| |
___________________________________
| |
| |
| |
| |
| UITableView |
| |
| |
| |
|_________________________________|
编辑:我刚刚发现,UIScrollView中的_startOffsetY被更改。我不知道这与它有什么关系,但分页是禁用的。
答
这样做:
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[scrollView setContentOffset:CGPointZero];
}
-(void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[scrollView setContentSize:(CGSizeMake(320, scrollSubView.frame.size.height))];
}
答
请确保您使用的是iOS5模拟器或设备,因为在iOS6中不推荐使用解除模型viewController。
要你出示像所有iOS工作....
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)])
{
[self presentViewController:test animated:YES completion:nil];
}
else
{
[self presentModalViewController:test animated:YES];
}
和罢免像
if ([self respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
{
[self dismissViewControllerAnimated:animated completion:nil];
}
else
{
[self dismissModalViewControllerAnimated:animated];
}
希望你会喜欢这个.......... ..