我目前正在使用新的iOS 5 Storyboard方法来创建带有Monotouch的Tabbed应用程序。我在Xcode中使用Storyboard开发了两个标签视图,并将它们适当地链接到标签栏控制器。我还想开发(在Xcode中)第三个选项卡视图,它将在另外两个选项卡之间共享。我想重复使用相同的布局,但根据选择的选项卡显示不同的数据(想想像“热门”和“最近”这样的布局具有相同的布局但不同的数据)。
为此,我想我可以在添加Storyboard驱动的标签后手动添加标签两次。如何使用Storyboard方法执行此操作?我不确定代码在哪里这样做,因为Storyboard的加载似乎非常透明(即我看到的AppDelegate中没有代码)。或者,是否有另一种(更简单/更好)的方式使用Storyboard方法在两个选项卡之间共享视图?
答案 0 :(得分: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
和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 有一个名为“访问第一个视图控制器”的部分