2

我目前正在使用新的 iOS 5 Storyboard 方法来使用 Monotouch 创建我的选项卡式应用程序。我在 Xcode 中使用 Storyboard 开发了两个选项卡视图,并将它们适当地链接到选项卡栏控制器。我还想开发(在 Xcode 中)第三个选项卡视图,它将在两个附加选项卡之间共享。我想重用相同的布局,但根据选择的选项卡显示不同的数据(想想像“流行”和“最近”这样的布局相同但数据不同的东西)。

为此,我想在添加 Storyboard 驱动的选项卡后,我可以手动添加两次选项卡。我如何使用情节提要方法做到这一点?我不确定在代码中的哪个位置执行此操作,因为 Storyboard 的加载看起来非常透明(即我看到的 AppDelegate 中没有代码)。或者,是否有另一种(更简单/更好)的方式来使用情节提要方法在两个选项卡之间共享视图?

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

你可以看到我打电话initHomeinitVisitor当我加载我的两个时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 有一段叫做“访问第一个视图控制器

于 2011-12-15T15:16:10.503 回答