1

ViewController(次に、ViewConを呼び出します)をNavigationControllerにプッシュしようとしています。(次に、NavConに電話します)

ただし、ViewConをNavConにプッシュすると、ViewConのツールバーは表示されなくなります。

ViewConのツールバーは、ViewConがNavConにプッシュされていない場合にうまく機能します。

誰がその理由を知っていますか?

ここに画像の説明を入力してください ここに画像の説明を入力してください

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        ViewController *viewController1 = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
        self.viewController = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease];
    } else {
        ViewController *viewController1 = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease];
        self.viewController = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease];
    }
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

ViewController.m

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIToolbar *toolbar = [[UIToolbar alloc] init];
    [toolbar setBarStyle:UIBarStyleBlackTranslucent];
    [toolbar sizeToFit];

    CGFloat toolbarHeight = [toolbar frame].size.height;
    CGRect viewBounds = self.view.bounds;
    CGFloat viewHeight = CGRectGetHeight(viewBounds);
    CGFloat viewWidth = CGRectGetWidth(viewBounds);
    CGRect rectArea = CGRectMake(0, viewHeight - toolbarHeight, viewWidth, toolbarHeight);

    [toolbar setFrame:rectArea];

    NSMutableArray *buttons = [[[NSMutableArray alloc] init] autorelease];

    UIBarButtonItem *prevButton = [[UIBarButtonItem alloc] initWithTitle:@"preView" style:UIBarButtonItemStyleBordered target:self action:@selector(prevClicked:)];
    [buttons addObject:prevButton];
    [prevButton release];
    [toolbar setItems:buttons animated:YES];

    [self.view addSubview:toolbar];
    [toolbar release];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
4

1 に答える 1

2

ビューコントローラのビューのフレームは、viewDidLoadメソッドで最終的なものではなく、おそらくナビゲーションバーのサイズを考慮していません。したがって、ナビゲーションバーが表示されると、ツールバーが画面の下限から外れる可能性があります。

これを修正するには、メソッドでツールバーのフレームを設定できますviewWillAppear:(コントローラーのビューには正しいフレームが表示されます)。または、ツールバーのautoresizingMaskプロパティをに設定しUIViewAutoresizingFlexibleTopMarginて、ツールバーがビューの下部に「固定」されるようにします。

于 2012-09-25T15:41:19.557 に答える