2

XCode 4.5 & iOS6 の使用

UITabBar (NIB) を使用して UINavigationController を作成しましたが、最初の起動時のタブの垂直位置が正しくありません。2 番目のタブをクリックし、最初のタブをもう一度クリックすると、縦方向の配置は OK です。

それで...最初の実行が完了したときに最初のタブを適切に配置するにはどうすればよいですか?

間違った位置を参照してください:

http://img231.imageshack.us/img231/2159/badbf.png

私のコード:

AppDelegate.h

@interface bib_AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UINavigationController *mainControllercode;
@property (strong, nonatomic) UITabBarController *tabBarController;

AppDelegate.m で

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // change defaul selected icon tabbar color to orange
    [[UITabBar appearance] setSelectedImageTintColor:[UIColor orangeColor]];

    // Override point for customization after application launch.
    UIViewController *viewController1 = [[agendaViewController alloc] initWithNibName:@"agendaViewController" bundle:nil];
    UIViewController *viewController2 = [[messagesViewController alloc] initWithNibName:@"messagesViewController" bundle:nil];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[viewController1, viewController2];

    self.mainControllercode = [[UINavigationController alloc] initWithRootViewController:self.tabBarController];
    self.window.rootViewController = self.mainControllercode;

    [self.window makeKeyAndVisible];
    return YES;
}

アジェンダViewController.h

#import <UIKit/UIKit.h>

@interface agendaViewController : UIViewController
@end

アジェンダViewController.m

#import "agendaViewController.h"

@interface agendaViewController ()

@end

@implementation agendaViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    self.title = NSLocalizedString(@"Agenda", @"Agenda");
    self.tabBarItem.image = [UIImage imageNamed:@"83-calendar"];
}
return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
     // Do any additional setup after loading the view, typically from a nib.
}

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

@end

編集1:

あなたが見ることができるストーリーボードでサンプルプロジェクトを作成しました。ストーリーボードなしで同じ機能を使用したい場合は、こちらからダウンロードしてください:

http://www.freefilehosting.net/atestsb

ありがとう

4

1 に答える 1

1

あなたはこれについて間違った方法で進んでいます。

UITabBarController には UINavigationControllers のコレクションが必要であり、それらのルート コントローラーはプライマリ Nib に設定されます。その後、各タブは独自のナビゲーション スタックを処理します。

現在、UINavigationController のルート内に UITabBarController を配置しています。これにより、問題が発生するだけでなく、ナビゲーション スタックを移動するときにタブ バーが削除されます。

プログラムで処理するための詳細については、このリンクを確認してください。

http://www.xdracco.net/howto-implement-uinavigationcontroller-uitabbarcontroller-programmatically/

于 2012-11-01T14:56:03.400 に答える