【问题标题】:Adding a segmented control to the center of UINavigationBar在 UINavigationBar 的中心添加分段控件
【发布时间】:2012-12-14 22:23:31
【问题描述】:

我正在尝试将 UISegmentedControl 添加到仅一个视图(不是整个视图控制器)的 UINavigationBar 的中间。我该怎么做?

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

【问题讨论】:

标签: iphone objective-c xcode cocoa-touch ios6


【解决方案1】:

此代码将帮助您。

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;

【讨论】:

  • 我只是使用了self.navigationItem.leftBarButtonItem = segmentControl;,它确实有效。谢谢!我将编辑对我有用的代码。
【解决方案2】:

您可以将 UISegmentedControl 作为 SubView 添加到您的导航栏。

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];

【讨论】:

    【解决方案3】:

    如果你想添加一个以任何视图为中心的 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 的视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多