UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontr

Posted

技术标签:

【中文标题】UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontroller【英文标题】:UINavigationController with UISegmentedControl in AppDelegate to switch rootviewcontroller of UINavigationController 【发布时间】:2013-04-09 10:15:39 【问题描述】:

我想创建一个应用程序,其中导航控制器作为窗口根视图控制器和导航控制器标题视图中的分段控件以切换其根视图控制器

问题:分段控制添加到 nag 控制器后不存在

代码:

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    FirstViewController * fc = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil];

    UINavigationController * nc = [[UINavigationController alloc] initWithRootViewController:fc];
    [fc release];

    self.window.rootViewController = nc;

    NSArray * array = [NSArray arrayWithObjects:@"GPS",@"List",@"Map", nil];

    UISegmentedControl * sc = [[UISegmentedControl alloc] initWithItems:array];

    sc.frame = CGRectMake(0, 0, 250, 50);
    sc.segmentedControlStyle = UISegmentedControlStylePlain;

    [nc.navigationItem setTitleView:sc];

    [sc release];
    [nc release];

    [self.window makeKeyAndVisible];

    return YES;

【问题讨论】:

尝试将其添加到 fc.navigationItem,然后您可能需要将此分段控制视图添加到每个呈现的视图控制器的所有导航项中 【参考方案1】:

您正在为 NavigationItem 设置 titleView,而不是为其设置 Item。

NSArray * array = [NSArray arrayWithObjects:@"GPS",@"List",@"Map", nil];

UISegmentedControl * sc = [[UISegmentedControl alloc] initWithItems:array];
sc.frame = CGRectMake(0, 0, 250, 50);
sc.segmentedControlStyle = UISegmentedControlStylePlain;

要在标题视图中设置,请使用此行

[ViewController.navigationItem setTitleView:sc];

设置左或右你不能直接将项目添加到导航栏,所以用你的segmentControl创建BarButtonItem

UIBarButtonItem *segmentItem = [[UIBarButtonItem alloc] initWithCustomView:sc];

将其添加到 ViewController 而不是 NavigationController

[ViewController.navigationItem setRightBarButtonItem:segmentItem];

【讨论】:

以上是关于UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontr的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 与 UISplitViewController

将 UINavigationController 与具有透明背景的 UIViewController 一起使用

UINavigationController 与 ViewController 相同的颜色

RedPark 无法从串口读取数据:UIViewController 与 UINavigationController

将 UISearchController 与 UINavigationController 一起使用

如何使 REFrostedViewController 与 UINavigationController 一起工作