我对iOS比较陌生,因此我对我的问题中的任何不一致表示道歉。对于我正在尝试构建的应用程序,我需要帮助解决以下问题。我的问题是:我正在使用的应用程序具有基于导航的功能,具有tableview(每天由用户填充)和详细的tableview列出用户的输入,但这只是应用程序的一个功能。 我希望有一个基于主选项卡的视图,其中一个选项卡(每个选项卡代表一个功能)指向此模块。
我想要求步骤和更改,例如 app delegate 或 rootviewcontroller (我可以发布代码,如果它有助于更好地制作,以便应用程序以多标签栏视图开始,其中一个标签指向链接到基于导航的应用程序的 rootviewontroller 的视图。
摘要:需要一个主标签栏视图,其中一个标签指向屏幕截图中突出显示的rootviewcontroller(链接如下)
如果有帮助,这里是我在app delegate中的相关功能代码:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
RootViewController *rootViewController = (RootViewController *)[[navigationController viewControllers] objectAtIndex:0];
rootViewController.managedObjectContext = self.managedObjectContext;
//Next TWO LINES FOR COLOR BACKGROUND
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor redColor]];
}
PS:这是故事板的截图:我希望有一个标签引用视图(在屏幕截图中突出显示),它是链接类rootviewcontroller.m / h
屏幕截图: http://i.stack.imgur.com/G9AXI.png
编辑:实际问题可以看作:如何以及如何才能拥有 tabbarviewcontroller ,我将使用storyboard 添加 / strong>我的 rootviewcontroller 而不是导航控制器(在屏幕截图中以黑色突出显示:http://i.stack.imgur.com/G9AXI.png)。
我当前的rootviewcontroller.m管理与当前navigationviewcontroller的tableview相关的任何内容,我是否还需要更改它?。
我为多余的细节道歉,我是iOS开发人员的新手。
从这个 http://i.stack.imgur.com/suLBm.png我尝试将故事板嵌入到标签barviewcontrol中 http://i.stack.imgur.com/TZxLo.png我试图嵌入标签控制器只是故事,但我得到一个错误:'NSInvalidArgumentException',原因:' - [UIViewController setManagedObjectContext:]:无法识别的选择器发送到实例0x8184e30'
与此相关的类是(尤其是rootviewcontroller.m,它现在是一个导航控制器:
的AppDelegate。{H,M} 配置Core Data堆栈和第一个视图控制器。
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
RootViewController *rootViewController = (RootViewController *)[[navigationController viewControllers] objectAtIndex:0];
rootViewController.managedObjectContext = self.managedObjectContext;
}
RootViewController的。{H,M} 管理表格视图以列出输入的所有值。提供添加和删除这些值的控件。
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = self.editButtonItem;
}
DetailViewController。{H,M} 管理详细信息显示以显示每个输入值的显示详细信息。
我最初的猜测是我需要更改rootviewcontroller appdidfinishlaunching 。
有什么建议吗?
答案 0 :(得分:0)
因此,您实际上需要故事板中的UITabBarViewController
,如果您希望能够推送其他控制器,则可以指向UINavigationController
。
只要UINavigationControllers
是rootviewcontroller
,您就不需要我在屏幕截图中看到的其他UINavigationController
。
您可以将UINavigationController
添加为第一个选项卡,然后您可以使用您需要显示的viewcontrollers填充其他选项卡。
所以基本上你需要创建UITabBarController
作为rootviewcontroller
。
如果我理解你的问题,请告诉我。
以下是UITabBarController
的示例:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
//Here you set your controller
UIViewController* centerController = [[UIViewController alloc]init];
UINavigationController *navCenter = [[[UINavigationController alloc] initWithRootViewController:centerController] autorelease];
UITabBarController *tabBarController = [[[UITabBarController alloc] init] autorelease];
tabBarController.viewControllers = [NSArray arrayWithObjects:navCenter,nil];
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.rootViewController = tabBarController;
return YES;
}
让我知道它是否有效。
你应该有这样的事情:
答案 1 :(得分:0)
事实上现在你有:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
RootViewController *rootViewController = (RootViewController *)[[[[tabController viewControllers] objectAtIndex:0] viewControllers] objectAtIndex:0];
rootViewController.managedObjectContext = self.managedObjectContext;
}