Scrollview在重新进入页面时截断视图

时间:2013-05-20 20:57:43

标签: ios objective-c uiscrollview

我有一个带有scrollview的detailviewcontroller,Dance。我已经设置了detailViewController的大小,并使用

实现了scrollview
- (void)viewDidAppear:(BOOL)animated
{
self.title = self.full_name;
[super viewDidAppear:animated];
pagescroll.ScrollEnabled = YES;
[pagescroll setContentOffset:CGPointMake(0,0) animated:NO];
pagescroll.contentSize = CGSizeMake(320, 1300);
}

detailviewcontroller具有与其连接的“子页面”(有关对象的更多详细信息)。它使用prepareforsegue处理与页面的连接。我可以毫无问题地将信息传递给子页面。

从其中一个子页面重新进入detailviewcontroller后,scrollview将不会一直滚动到顶部,即detailviewcontroller页面被截断。根据我单击按钮转到其中一个子页面之前滚动的距离,页面也会被截断。

帮助我消除截断的祸害。

1 个答案:

答案 0 :(得分:0)

在显示视图后,将始终调用viewDidAppear方法,因此您可能希望查看您认为不属于哪一行代码,例如初始化代码。

我的假设是这些代码行可以放在viewDidLoad中,因为viewDidLoad只在视图加载到内存时被调用一次。我想你每次重新进入详细视图控制器时都不会总是启用滚动并设置滚动视图的内容大小:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = self.full_name;
    pagescroll.ScrollEnabled = YES;
    pagescroll.contentSize = CGSizeMake(320, 1300);
}

然后你只剩下在viewDidAppear中设置内容偏移以避免截断:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [pagescroll setContentOffset:CGPointMake(0,0) animated:NO];
}

或许您可以在视图消失之前重置内容偏移量:

- (void)viewWillDisappear:(BOOL)animated
{
    pagescroll.contentOffset = CGPointMake(0, 0);
    [super viewWillDisappear:animated];
}