1

我正在尝试将 ViewController(下一步,调用 ViewCon)推送到 NavigationController。(接下来,调用 NavCon)

但是当 ViewCon 被推送到 NavCon 时,ViewCon 的工具栏就消失了。

当 ViewCon 未在 NavCon 中推送时,ViewCon 的工具栏可以正常工作。

谁知道原因?

在此处输入图像描述 在此处输入图像描述

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;
}

视图控制器.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 回答