Iphone 将分段控件添加到UINavigationBar的中心

Iphone 将分段控件添加到UINavigationBar的中心,iphone,objective-c,xcode,cocoa-touch,ios6,Iphone,Objective C,Xcode,Cocoa Touch,Ios6,我试图将UISegmentedControl添加到只有一个视图(而不是整个视图控制器)的UINavigationBar的中间。我该怎么做呢 我只读的其他答案允许整个视图控制器包含UINavigationItem作为标题。我需要它只在一个视图上显示。此代码将帮助您 UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:

我试图将
UISegmentedControl
添加到只有一个视图(而不是整个视图控制器)的
UINavigationBar
的中间。我该怎么做呢


我只读的其他答案允许整个视图控制器包含
UINavigationItem
作为标题。我需要它只在一个视图上显示。

此代码将帮助您

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:
                                            [NSArray arrayWithObjects:@"Add",@"Delete",
                                             nil]];
    segmentedControl.frame = CGRectMake(0, 0, 80, 30);
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    [segmentedControl setWidth:35.0 forSegmentAtIndex:0];
    [segmentedControl setWidth:45.0 forSegmentAtIndex:1];

    [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    segmentedControl.momentary = YES;

    UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
    [segmentedControl release];

    self.navigationItem.leftBarButtonItem = segmentBarItem;
    [segmentBarItem release];
此代码的结果是

编辑:

准确的工作代码:

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:
                                            [NSArray arrayWithObjects:@"Add",@"Delete",
                                             nil]];
    segmentedControl.frame = CGRectMake(0, 0, 80, 30);
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    [segmentedControl setWidth:35.0 forSegmentAtIndex:0];
    [segmentedControl setWidth:45.0 forSegmentAtIndex:1];

    [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    segmentedControl.momentary = YES;

    self.navigationItem.titleView = segmentedControl;

您可以将UISegmentedControl作为子视图添加到导航栏

NSArray *arrayOfItems = [[NSArray alloc] initWithObjects:@"A",@"B",@"C", nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:arrayOfItems];
segmentedControl.frame=CGRectMake(60, 0, 200, 44);
[self.navigationController.navigationBar addSubview:segmentedControl];

如果要添加以任何视图为中心的UISegmentedControl,而不仅仅是UINavigationView,请执行以下操作:

UISegmentedControl *segmentedTab = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"a", @"b", @"c", nil]];
segmentedTab.center = CGPointMake(segmentedView.frame.size.width / 2, segmentedView.frame.size.height / 2);
[self.segmentedView addSubview:segmentedTab];

其中segmentedView是一个将包含我们的UISegmentedControl的视图。

按照我的答案@Rajneesh071其他问题的答案没有回答我的问题。或者你建议我在导航栏上画一个视图?是的,我建议你在导航栏上添加子视图navigation@Rajneesh071这是唯一的方法吗?我刚刚使用了self.navigationItem.LeftBarButtonim=segmentControl成功了。谢谢我将编辑适用于我的代码。