2

現在、モノタッチでタブ付きアプリケーションを作成するために、新しい iOS 5 ストーリーボード アプローチを使用しています。ストーリーボードを使用して Xcode で 2 つのタブ ビューを開発し、それらをタブ バー コントローラーに適切にリンクしました。また、2 つの追加のタブ間で共有される 3 番目のタブ ビューを (Xcode で) 開発したいと考えています。同じレイアウトを再利用したいが、選択されているタブに応じて異なるデータを表示したい (レイアウトは同じだがデータが異なる「人気」と「最近」のようなものを考えてください)。

これを行うには、ストーリーボード駆動のタブが追加された後、タブを手動で 2 回追加できると考えました。ストーリーボード アプローチでこれを行うにはどうすればよいですか? ストーリーボードの読み込みはかなり透過的であるように見えるため、コードのどこでこれを行うべきかわかりません (つまり、AppDelegate にはコードが表示されません)。または、ストーリーボード アプローチを使用して 2 つのタブ間でビューを共有する別の (より簡単で優れた) 方法はありますか?

4

1 に答える 1

0

Monotouch はわかりませんが、Objective-c で行った方法は次のとおりです。このトピックについて何も見つけられなかったので、何か問題があればコメントしてください:) ちなみに、私は ARC を使用しているので、メモリを手動で管理することはありません! 私が達成する必要があったのは、タブバーを持ち、同じviewControllerをロードし、タブごとに異なるデータをロードする、あなたのようなものでした.

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{   
    UITabBarController *root = (UITabBarController*)self.window.rootViewController;

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];

    TeamViewController *home = [[mainStoryboard instantiateViewControllerWithIdentifier:@"Team"] initHome];
    TeamViewController *visitor = [[mainStoryboard instantiateViewControllerWithIdentifier:@"Team"] initVisitor];

    [root setViewControllers:[NSArray arrayWithObjects:home, visitor, nil] animated:NO];

    UITabBar *tabs = root.tabBar;
    UITabBarItem *homeTab = [tabs.items objectAtIndex:0];
    UITabBarItem *visitorTab = [tabs.items objectAtIndex:1];

    homeTab.title = @"Home team";
    visitorTab.title = @"Visitor team";

    return YES;
}

あなたは私が呼び出しinitHomeているのを見ることができますinitVisitor.2つをロードTeamViewControllerすると、それに関するコードがここにあります.

TeamViewController.h

@interface TeamViewController : UIViewController
{
    enum
    {
        HOME,
        VISITOR
    };

    int team;
}

TeamViewController.m

- (id)initHome
{
    team = HOME;

    return self;    
}

- (id)initVisitor
{
    team = VISITOR;

    return self;    
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    if(team == HOME)
    {
        label.text = @"home data";
    }
    else if(team == VISITOR)
    {
        label.text = @"visitor data";
    }
}

それをあなたのプロジェクトにどれだけうまく翻訳できるかわかりませんが、全体像をつかんでいただければ幸いです :)

ストーリーボードを使用して最初のビュー コントローラーにアクセスする方法について少し読む必要がある場合: http://developer.apple.com/library/ios/#releasenotes/Miscellaneous/RN-AdoptingStoryboards/_index.html#//apple_ref/ doc/uid/TP40011297最初のView Controllerへのアクセス 」というセクションがあります

于 2011-12-15T15:16:10.503 に答える