1

UIViewとUIScrollViewを隣接させるFirstViewControllerがあり、UIScrollViewにUITableViewがあります。UITableViewでスクロールが無効になっているため、UIScrollViewのcontentSizeを大きくして、完全なUITableViewを表示できるようにします。

___________________________________
|                                 |
|                                 |
|                                 |
-----------Various content---------
|                                 |
|                                 |
|                                 |
___________________________________
|                                 |
|                                 |
|                                 |
|                                 |
|           UITableView           |
|                                 |
|                                 |
|                                 |
|_________________________________|

UIScrollViewのある時点でcontentOffset=/ = 0になり、UITableViewのセルを押すと、新しいコントローラー(SecondViewController)がモーダルに表示されます。これは正常に機能します。SecondViewControllerを閉じると、FirstViewControllerのコンテンツが台無しになります。

UITableViewは、最初は画面の中央(垂直方向)に原点を持つように設定されています。SecondViewControllerを閉じると、UITableViewの原点は画面の中央にありますが、UITableViewの上にあるコンテンツは、contentOffsetの値(SecondViewControllerをプッシュする前の状態)でUIScrollVIew内にプッシュされます。

___________________________________
|                                 |
-----------Various content---------
|                                 |    
|                                 |
|                                 |
|                                 |    
|                                 |
___________________________________
|                                 |
|                                 |
|                                 |
|                                 |
|           UITableView           |
|                                 |
|                                 |
|                                 |
|_________________________________|

編集:UIScrollViewの_startOffsetYが変更されていることを発見しました。そして、これがそれと関係があるかどうかはわかりませんが、ページングは​​無効になっています。

4

2 に答える 2

1

これを行う :

-(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))];

}
于 2013-06-06T14:16:48.533 に答える
0

iOS6ではdismissモデルviewControllerが非推奨になっているため、iOS5シミュレーターまたはデバイスを使用していることを確認してください。

すべての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];
}

あなたがこれを好きになることを願っています............

于 2013-03-21T09:12:51.860 に答える