0

我有一个带有滚动视图的详细视图控制器 Dance。我已经设置了 detailViewController 的大小并实现了滚动视图,

- (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 时,滚动视图不会一直滚动到顶部,即detailviewcontroller 页面被截断。该页面的截断也不同,具体取决于我在单击按钮转到其中一个子页面之前滚动了多远。

帮我消除截断的祸害。

4

1 回答 1

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];
}
于 2013-05-20T23:28:10.440 回答