关闭一个视图控制器弄乱了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]; 
} 

希望你会喜欢这个.......... ..