2

我正在尝试以UISegmentedControl编程方式添加titleView一个UINavigationController. 但它没有出现。经过进一步调查,我发现如果未根据Apple 文档titleView设置为,则该属性将被忽略。所以我将它设置为但分段控件仍然没有显示出来!leftBarButtonItemnilnil

下面是我的代码。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = nil;
    UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Personnal", @"Department", @"Company", nil]];
    [statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
    self.navigationItem.titleView = statFilter;
}

我应该怎么办?我在这里想念什么?

谢谢。

编辑

感谢所有的回复。但是,它们都不适合我,所以我进行了更深入的研究。这一定是我布置申请的方式。我可能应该早点提到这一点。道歉。

我正在创建的是一个 Storyboard 应用程序。主控制器是一个UITabBarController. 单击某个选项卡时,我想显示一个UITableViewController. 由于您无法在 a 中显示导航栏UITableViewController,因此我发现我必须在其中添加 aUINavigationController并实现 a UITableViewController。这就是我的应用程序的基本外观,

在此处输入图像描述

该仪表板视图控制器连接到从类继承的UINavigationController 类。也许这就是问题所在?

因为我刚刚创建了一个小型测试应用程序,所以将 aUIViewController嵌入到 a 中UINavigationController并编写了我在上面的原始问题中发布的代码UIViewControllerViewDidLoad 和分段控件显示得很好。现在我不知道如何在我的主应用程序中做同样的事情,因为没有其他视图控制器或任何连接到导航控制器的东西。

对不起,如果我让事情变得更糟。如果有任何不清楚的地方,请发表评论。

4

2 回答 2

1

我猜你必须让 UISegmentedControll 成为 UIBarButtonItem:

更新:此代码使 SegmentedControll 居中:

- (void)viewDidLoad{
    self.title = nil;
    UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Personnal", @"Department", @"Company", nil]];
    [statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];

    NSMutableArray *buttonArray     = [[NSMutableArray alloc] init];
    UIBarButtonItem *flexibleSpace  = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    [buttonArray addObject:flexibleSpace];
    [buttonArray addObject:[[UIBarButtonItem alloc] initWithCustomView:statFilter]];
    [buttonArray addObject:flexibleSpace];

    self.navigationItem.leftBarButtonItems = buttonArray;
    [buttonArray release];
}

我希望这可以帮助你!

于 2013-03-04T10:33:00.390 回答
0

使用这个我希望这会帮助你

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIView * navview = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 160,80)];
    self.navigationItem.leftBarButtonItem = nil;
    UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Personnal", @"Department", @"Company", nil]];
    [navview addSubview:statFilter];
    self.navigationItem.titleView = navview;
}
于 2013-03-04T10:35:54.737 回答