如何在UINavigationItem中添加UISegmentControl ..?

时间:2011-07-27 19:35:01

标签: ios iphone objective-c uisegmentedcontrol

如何在UISegmentedControl中添加UINavigationItem? 我想创建一个带有段控件的UINavigationBar,它添加了导航栏的标题。

UISegmentedControl有两个索引。

这就是我所拥有的:

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:[UIImage imageNamed:@"grid.png"],[UIImage imageNamed:@"list.png"],nil]];
    [segmentedControl addTarget:self action:@selector(segmentedAction) forControlEvents:UIControlEventValueChanged];
    segmentedControl.frame = CGRectMake(0, 0, 90, 40);
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segmentedControl.momentary = YES;
    [segmentedControl setTintColor:[UIColor clearColor]];

    UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];    
    self.navigationItem.rightBarButtonItem = segmentBarItem;

我把它放在右侧。所以,也想放在导航栏的中间。

这不起作用如果我做错了请告诉我。

由于

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,你只需要将分段控件添加到UINavigationItem并将其添加到你的UINavigationBar:

// This code is used for a custom navigation bar

UINavigationItem* newItem = [[UINavigationItem alloc] initWithTitle:@""];
[newItem setTitleView:segmentedControl];

// Assuming you already have a navigation bar called "navigationBar"
[navigationBar setItems:[NSArray arrayWithObject:newItem] animated:NO];

// No memory leaks please...
[newItem release];

或者如果您想使用现有的控制器

// This is used for an existing navigation controller
[navigationController.navigationBar.topItem setTitleView:segmentedControl];
// or if you want to access through the root view controller of the nav controller
[rootController.navigationItem setTitleView:segmentedControl];

这应该将导航栏的中心视图设置为分段控件。

希望我能帮忙!

编辑:如果您需要更多帮助,这些课程的Apple文档非常全面:

UINavigationItem

UINavigationBar