Xamarin.ios 使用故事板和Monotouch手动向UITabController添加更多选项卡

Xamarin.ios 使用故事板和Monotouch手动向UITabController添加更多选项卡,xamarin.ios,storyboard,uitabcontroller,Xamarin.ios,Storyboard,Uitabcontroller,我目前正在使用新的iOS5情节串连板方法来使用Monotouch创建我的选项卡式应用程序。我已经用带有情节提要的Xcode开发了两个选项卡视图,并将它们适当地链接到选项卡栏控制器。我还想开发(在Xcode中)第三个选项卡视图,它将在另外两个选项卡之间共享。我想重复使用相同的布局,但根据所选的选项卡显示不同的数据(想想像“流行”和“最近”这样的布局相同但数据不同的东西) 为此,我想我可以在添加故事板驱动的选项卡后手动添加两次选项卡。如何使用故事板方法实现这一点?我不确定在代码中的何处执行此操作,因

我目前正在使用新的iOS5情节串连板方法来使用Monotouch创建我的选项卡式应用程序。我已经用带有情节提要的Xcode开发了两个选项卡视图,并将它们适当地链接到选项卡栏控制器。我还想开发(在Xcode中)第三个选项卡视图,它将在另外两个选项卡之间共享。我想重复使用相同的布局,但根据所选的选项卡显示不同的数据(想想像“流行”和“最近”这样的布局相同但数据不同的东西)


为此,我想我可以在添加故事板驱动的选项卡后手动添加两次选项卡。如何使用故事板方法实现这一点?我不确定在代码中的何处执行此操作,因为故事板的加载似乎非常透明(即我看到的AppDelegate中没有代码)。或者,是否有另一种(更简单/更好的)方法可以使用故事板方法在两个选项卡之间共享视图?

我不知道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;
}
- (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";
    }
}
当我加载我的两个
TeamViewController
时,您可以看到我调用
initHome
initVisitor
,下面是关于它的代码

TeamViewController.h

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

    int team;
}
TeamViewController.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;
}
- (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";
    }
}
我不知道你能如何将其转化为你的项目,但我希望你能了解它的大局:)

如果需要了解如何使用故事板访问第一个视图控制器,请执行以下操作:
有一个部分叫做“访问第一视图控制器”

我不知道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;
}
- (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";
    }
}
当我加载我的两个
TeamViewController
时,您可以看到我调用
initHome
initVisitor
,下面是关于它的代码

TeamViewController.h

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

    int team;
}
TeamViewController.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;
}
- (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";
    }
}
我不知道你能如何将其转化为你的项目,但我希望你能了解它的大局:)

如果需要了解如何使用故事板访问第一个视图控制器,请执行以下操作: 有一个叫做“访问第一视图控制器”的部分