如何使用Storyboard将UISegmentedControl添加到我的UIToolbar?

时间:2012-06-17 15:23:28

标签: ios storyboard uitoolbar uisegmentedcontrol

  1. 我正在尝试在下面的UIToolbar中添加分段控件,但是当我尝试在Storyboard中将其拖动时,它会替换我的表视图。
  2. 此外,当我尝试将UIBarButton添加到我的工具栏时,它会将我的原型单元格向下推...我的视图层次结构是否错误?
  3. 无论如何,当我添加UIBarButton项时,在模拟器中,工具栏不是我在导航控制检查器中设置的黑色透明。怎么了?
  4. 谢谢!

    enter image description here enter image description here

4 个答案:

答案 0 :(得分:6)

要使用界面构建器在工具栏中创建分段控制元素,可以使用以下提示

1)在导航控制器中创建分段控制栏按钮项

Create Segmented Control Bar Button Item in Navigation Controller

2)将栏按钮项拖到导航项

Drag Bar Button Item up to Navigation Item

3)然后你应该得到以下结构

The resulting structure

4)现在,您可以选择分段控制来设置其属性

Select Segmented Control to set its properties

答案 1 :(得分:3)

1 - 以编程方式执行。首先需要为UIToolbar分配一个框架,然后可以在其中添加元素(segmentedControl)。我建议使用UIBarButtonItems,基本上是相同的。

要坚持到底部,尝试这样做:

#define SCREEN_FRAME [[UIScreen mainScreen] applicationFrame]

CGRect frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.height - 44, [[UIScreen mainScreen] bounds].size.width, 44);
UIToolbar *toolBar = [[UIToolbar alloc]initWithFrame:frame];
toolBar.frame = CGRectMake(0,self.view.frame.size.height-toolBar.frame.size.height,SCREEN_FRAME.size.width,toolBar.frame.size.height);

//Setting up the items

UIBarButtonItem *first = [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"image.png"] style:UIBarButtonItemStylePlain target:self action:@selector(yourAction:)] autorelease]; 
UIBarButtonItem *second = [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"image.png"] style:UIBarButtonItemStylePlain target:self action:@selector(yourAction:)] autorelease]; 

//Creating an array with the items
NSArray *items = [NSArray arrayWithObjects:first,second, nil];

//Assigning the array to the toolBar
[toolBar setItems: items];

然后你可以用

设置它的样式
mytoolbar.barStyle = UIBarStyleBlack;

2 - 与上述相同,框架。

3 - 您需要将navigationController样式设置为黑色 使用self.navigationController.navigationBar.style = UIBarStyleBlack; ,或在IB中选择按钮,并从Inspector中将Tint或Style设置为您想要的任何内容。

同时检查this问题

答案 2 :(得分:1)

我认为这里有一个导航视图控制器。他们有自己的工具栏,但它是隐藏的和空的。您看到的工具栏只是模拟工具栏,目的是让您编辑UI。

为了使用storyboard执行此操作,请不要将分段控件添加到模拟工具栏,创建新工具栏并将其添加到控制器中可用的视图树(作为表视图的同级)并创建IBOutlet引用它。然后在viewDidLoad方法中将工具栏中的项目分配给视图控制器已创建的工具栏。

在这个例子中,我在视图控制器上创建了一个名为(cunningly)工具栏的属性:

@property (nonatomic, retain) IBOutlet UIToolbar toolbar;

在我的视图控制器的实现中,我手动分配工具栏项目:

-(void)viewDidAppear:(BOOL)animated 
{
    [self setToolbarItems:self.toolbar.items animated:NO];
    [self.navigationController setToolbarHidden:NO animated:YES];
}

弹出视图控制器时,您需要隐藏工具栏,例如在调用视图控制器中:

-(void)viewWillAppear:(BOOL)animated
{
    [self.navigationController setToolbarHidden:YES animated:YES];
}

当然,假设你想隐藏它。

答案 3 :(得分:0)

我是通过将UISegmentedController放在Bar Button Item中来完成的。

将工具栏添加到UINavigationController窗口,然后在ViewController屏幕上启用此工具栏的显示。

将一个条形按钮拖到ViewController屏幕上的工具栏中,然后将UISegmentedController拖入其中(将按钮调整为屏幕的整个宽度)

要将它全部连接起来,按住Ctrl键从UISegmentedController拖动到相应的.h文件,从“引用插座”拖动到黄色视图控制器图标(使用相同的变量名称),然后从“ValueChanged”拖动到黄色图标(在控制器上选择要在新选择上调用的方法)。

这一切似乎都按预期工作。 (如果您无法在控制器上选择一个段来设置初始值,那么您没有按照上述说明连接引用插座。这让我感到困惑了一段时间。)