0
MoveToNewLocViewContoller *move2NewLocVC = [[MoveToNewLocViewContoller alloc] initWithLocItemArray:moveToNewLocArray andSyLocIDArray:syLocIdArray];
        [move2NewLocVC setTitle:cell.textLabel.text];


        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:move2NewLocVC];
        navController.view.width = PSIsIpad() ? self.view.width : 100;
        [navController.navigationBar setTintColor:BLUE];


        if (navController) {

            [XAppDelegate.menuInterfaceViewController.stackViewController pushViewController:navController fromViewController:nil animated:YES];
            [navController release];
            //[viewController release];
            [moveToNewLocArray release];
            [move2NewLocVC release];
        }

iPadを回転させたときに、上記のNavigation Controllerのサイズが変更されないようにします。navController.view.autoresizedSubviews = NO; を試しました。

これは機能しますが、UITableView(MoveToNewLocViewController) が一番下までスクロールできないという問題があります。サイズ変更を回避する主な目的は、向きに合わせて巨大なカスタム UITableViewcell を再描画しないようにすることです。オリエンテーションの後に UiTableview のサイズを変更する必要があることはわかっていますが、問題はどこでしょうか。私は試した

 -(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {}

-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {}

うまくいかないようです。これは、スタック コンテナー ビューに挿入しているためですか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

UIViewController として UiNavigationController に追加される UIView 内に UITableView を含めることでこれを解決しました。デバイスが回転すると、didRotateFrominterfaceOrientation メソッドでビューのサイズを変更します

-(void) didRotateFromInterfaceOrientation:  (UIInterfaceOrientation)fromInterfaceOrientation
  PSStackedViewController *stackController = XAppDelegate.menuInterfaceViewController.stackViewController;
if( [[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait || [[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortraitUpsideDown){
    [stackController setLargeLeftInset:50 animated:YES];
    self.navigationController.navigationBar.frame = CGRectMake(self.navigationController.navigationBar.frame.origin.x, self.navigationController.navigationBar.frame.origin.y, self.view.frame.size.width, self.navigationController.navigationBar.frame.size.height);
    self.move2NewLocTableView.height = self.view.height;
}
if( [[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft || [[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeRight) {
    //self.navigationController.view.frame = self.tableView.frame;
    [stackController setLargeLeftInset:320 animated:YES];
    self.move2NewLocTableView.height = 700;
} 
于 2012-11-12T21:14:41.997 に答える