无法使用 UISplitView 在 TableView 上添加 NavigationController
Posted
技术标签:
【中文标题】无法使用 UISplitView 在 TableView 上添加 NavigationController【英文标题】:Can't add NavigationController on TableView using UISplitView 【发布时间】:2013-06-13 10:49:04 【问题描述】:我在这里遇到了一些困难,如果您认为我的问题对您来说很容易,请原谅我。
我正在尝试使用UISplitView
创建应用程序。左边的第一个视图是TableView
,右边的另一个只是普通视图。
这是我在 AppDelegate.m
for UISplitView
中的代码。
#import "AppDelegate.h"
#import "MasterViewController.h"
#import "DetailViewController.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
MasterViewController *masterVC = [[MasterViewController alloc]init];
DetailViewController *detailVC = [[DetailViewController alloc]init];
UISplitViewController *splitVC = [[UISplitViewController alloc]init];
[splitVC setViewControllers:[NSArray arrayWithObjects:masterVC,detailVC,nil]];
[self.window setRootViewController:splitVC];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
现在,我想在TableView
上添加一个导航栏,如果我使用SplitView
,我不知道如何添加,但是当我使用单个TableView
时我可以。
这是我在 AppDelegate.m
中的代码,使用一个使用 TableView
的视图应用程序。 (这是有效的)
#import "AppDelegate.h"
#import "ViewController.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
//create UINavigationController
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController = nav;
[self.window makeKeyAndVisible];
return YES;
希望你能理解我想说的话。我不能发布图片,因为我没有足够的声誉。再次..问题是“如果我使用UISplitView
,如何在TableView
中添加导航控制器?”
如果我使用storyboards
而不是使用两个XIB
文件,您认为对我来说会容易吗?希望您能帮助我。
提前致谢!
【问题讨论】:
【参考方案1】:试试这个代码
在 AppDelegate.h 文件中
UINavigationController *detailNavigationController;
UINavigationController *masterNavigationController;
UISplitViewController *HomeSpilitView;
HomeSpilitViewController *HomeMster;
HomeDetailsViewController *HomeDetailsViewControllers;
在 AppDelegate.m 文件中
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
NSMutableArray *array = [NSMutableArray array];
HomeSpilitView = [[[UISplitViewController alloc] init]autorelease];
HomeMster = [[HomeSpilitViewController alloc] initWithNibName:@"HomeSpilitViewController" bundle:nil];
masterNavigationController = [[[UINavigationController alloc] initWithRootViewController:HomeMster] autorelease];
HomeMster.title=@"Title home";
masterNavigationController.navigationBar.tintColor =[UIColor colorWithRed:255/255.0 green:108/255.0 blue:61/255.0 alpha:0.1];
[array addObject:masterNavigationController];
HomeDetailsViewController *HomeDetailsViewControllers = [[HomeDetailsViewController alloc] initWithNibName:@"HomeDetailsViewController" bundle:nil];
detailNavigationController = [[[UINavigationController alloc] initWithRootViewController:HomeDetailsViewControllers] autorelease];
detailNavigationController.navigationBar.tintColor =[UIColor colorWithRed:255/255.0 green:108/255.0 blue:61/255.0 alpha:0.1];
HomeDetailsViewControllers.title=@"details title";
HomeMster.objHomeDetailsViewcontroller=HomeDetailsViewControllers;
HomeSpilitView.delegate = HomeDetailsViewControllers;
[array addObject:detailNavigationController];
[HomeSpilitView setViewControllers:array];
[self.window setRootViewController:HomeSpilitView];
[self.window makeKeyAndVisible];
return YES;
【讨论】:
我遇到了一些错误。 XCode 似乎无法识别HomeSplitViewController
。请解释一下您是如何做到的,您是否在其他文件中的某个地方定义了它?在ViewController.h
也许?以上是关于无法使用 UISplitView 在 TableView 上添加 NavigationController的主要内容,如果未能解决你的问题,请参考以下文章
在通用 iOS 应用程序中使用 Storyboard 的 UISplitView
在 UISplitView 中选择导航后,DetailView 消失