我想在我的iPhone应用程序上创建一个UIBarButtonItem,它有两个“部分”。基本上我希望功能相当于YouTube iPhone应用程序“观看最多”部分中的“今天”,“本周”和“全部”按钮。
看起来这个功能并不像多个UIBarButtonItem一样,因为一次只能选择三个“部分”中的一个。有谁知道这是怎么做的?
答案 0 :(得分:7)
你看到的是一个UISegmentedControl。这很容易设置。 YouTube正在做的事情(可能)是这样的:
NSArray * items = [[NSArray alloc] initWithObjects: NSLocalizedString(@"Today", @""),
NSLocalizedString(@"This Week", @""),
NSLocalizedString(@"All", @""), nil];
UISegmentedControl * switcher = [[UISegmentedControl alloc] initWithItems: items];
[items release];
// setup the switcher: correct UI style, tint, etc.
switcher.style = UISegmentedControlStyleBar;
switcher.tint = self.navigationController.navigationBar.tintColor; // unnecessary?
// set the target function -- needs to check selectedIndex property
[switcher addTarget: self
action: @selector(switcherTapped:)
forControlEvents: UIControlEventValueChanged];
// set default selection
switcher.selectedSegmentIndex = 0;
// set the switcher as a custom view to use in place of the normal title
self.navigationItem.titleView = switcher;
[switcher release];
答案 1 :(得分:2)
实际上,我认为他正在描述一个UISegmentedControl,它可以添加到当前视图的导航栏中,如下所示:
UISegmentedControl *segmentedControl = ...
self.navigationItem.titleView = segmentedControl;
[segmentedControl release];
您可以像这样设置UISegmentedControl(“今天,上周,全部”)的片段(这也设置了控件值更改时的回调):
NSArray *sampleArray = --makeAnArrayHere--;
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]
initWithItems:sampleArray];
[segmentedControl addTarget:self action:
@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
我没有从工作项目中复制此内容,因此可能会出现一些轻微的语法错误,但这应该引导您朝着正确的方向发展。
答案 2 :(得分:1)
观看YouTube应用,我认为您实际上想要使用UISegmentedControl。
答案 3 :(得分:0)
您正在寻找的是使用UITabBar
的{{1}}控件。