0

スクロールビューを備えた詳細ビューコントローラー、ダンスがあります。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 を使用してページへの接続を処理します。問題なくサブページに情報を渡すことができます。

サブページの 1 つから detailviewcontroller を再入力すると、スクロールビューは一番上までスクロールしません。つまり、detailviewcontroller ページが切り捨てられます。また、サブページの 1 つに移動するボタンをクリックする前にどれだけ下にスクロールしたかに応じて、ページの切り捨ても異なります。

切り捨ての惨劇をなくすのを手伝ってください。

4

1 に答える 1

0

viewDidAppear メソッドは、ビューが表示された後に常に呼び出されるため、初期化コードなど、そこに属していないと思われるコード行を確認する必要がある場合があります。

viewDidLoad は、ビューがメモリに読み込まれるときに 1 回だけ呼び出されるため、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 に答える