如何以编程方式将UISegmentedControl添加到容器视图

我将如何定义UISegmentedControl的框架? 我希望分段控件出现在container view的底部,即UIView

这一个是完美的我testing…..

 UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 435)]; scroll.contentSize = CGSizeMake(320, 700); scroll.showsHorizontalScrollIndicator = YES; NSArray *itemArray = [NSArray arrayWithObjects: @"One", @"Two", @"Three", nil]; UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray]; segmentedControl.frame = CGRectMake(35, 200, 250, 50); segmentedControl.segmentedControlStyle = UISegmentedControlStylePlain; [segmentedControl addTarget:self action:@selector(MySegmentControlAction:) forControlEvents: UIControlEventValueChanged]; segmentedControl.selectedSegmentIndex = 1; [scroll addSubview:segmentedControl]; [segmentedControl release]; [self.view addSubview:scroll]; 

然后在你的课堂上添加你的方法。

 - (void)MySegmentControlAction:(UISegmentedControl *)segment { if(segment.selectedSegmentIndex == 0) { // code for the first button } } 

对于不赞成的UISegmentedControlStyle,你可以看看这个 URL。

你可以这样做

 UISegmentedControl *segmentControl = [[UISegmentedControl alloc]initWithItems:@[@"One",@"Two"]]; [segmentControl setSegmentedControlStyle:UISegmentedControlStyleBar]; segmentControl.frame = CGRectMake(10, 50, 300, 30); [segmentControl addTarget:self action:@selector(segmentedControlValueDidChange:) forControlEvents:UIControlEventValueChanged]; [segmentControl setSelectedSegmentIndex:0]; [scrollView addSubview:segmentControl]; [segmentControl release]; 

第2步:

 -(void)segmentedControlValueDidChange:(UISegmentedControl *)segment { switch (segment.selectedSegmentIndex) { case 0:{ //action for the first button (Current) break;} case 1:{ //action for the first button (Current) break;} } } 

步骤1.使用索引值创build分段控件

 - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"common-bg.jpg"]]; [self.navigationItem setHidesBackButton:YES]; //-- For creating segment control in navigation bar UISegmentedControl *mainSegment = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Back", @"Month", @"Year", @"Home", nil]]; [mainSegment setSegmentedControlStyle:UISegmentedControlStyleBar]; mainSegment.frame = CGRectMake(0,0, 400, 43); self.navigationItem.titleView = mainSegment; mainSegment.selectedSegmentIndex = 1; [mainSegment addTarget:self action:@selector(mainSegmentControl:) forControlEvents: UIControlEventValueChanged]; [self.view addSubview:mainSegment]; //--**-- } 

第2步。创build子视图

 - (void)mainSegmentControl:(UISegmentedControl *)segment { if(segment.selectedSegmentIndex == 0) { // action for the first button (Current or Default) } else if(segment.selectedSegmentIndex == 1) { // action for the second button } else if(segment.selectedSegmentIndex == 2) { // action for the third button } else if(segment.selectedSegmentIndex == 3) { // action for the fourth button } } 

这与目前的答案类似,但对于iOS 8设备已经清理了一下。

 NSArray *itemArray = [NSArray arrayWithObjects: @"Uno", @"Dos", @"Tres", nil]; UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray]; segmentedControl.frame = CGRectMake(35, 200, 250, 50); [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents: UIControlEventValueChanged]; segmentedControl.selectedSegmentIndex = 1; [self.view addSubview:segmentedControl]; 
  1. 创build一个数组来存储段的值
  2. 使用数组初始化段
  3. 在屏幕上指定一个位置并调整控件大小
  4. 将其指向用户与之交互时调用的方法
  5. select一个默认值(在这种情况下,Dos)
  6. 把它放在主视图上

然后创build用户更改值时调用的segmentAction方法

 - (void)segmentAction:(UISegmentedControl *)segment { switch (segment.selectedSegmentIndex) { case 0: // Uno break; case 1: // Dos break; case 2: // Tres break; default: break; } } 

我只是喜欢switch语句,因为它看起来更清晰。 你可以通过创build一个枚举来改进它,并使用其中的值作为选项(optionUno,optionDos,optionTres)而不是0,1,2。

要以编程方式将UISegmentedControl添加到容器视图,请按照下列步骤操作:

 // Create UISegmentedControl object to add control UISegment. UISegmentedControl *objSegment = [[UISegmentedControl alloc] initWithItems:array]; // Set frame for objSegment Control (formate: (x, y, width, height)). where, y = (height of view - height of control). [objSegment setFrame:CGRectMake(0, (self.view.frame.size.height - 40), 320, 40)]; // handle UISegmentedControl action. [objSegment addTarget:self action:@selector(handleSegmentControl:) forControlEvents: UIControlEventValueChanged]; // Add your UISegmentedControl in your view. [self.view addSubview:objSegment]; 

如果您有任何疑问,请联系我。

迅速:

 let items = ["All Fruits", "Orange", "Grapes", "Banana"] let filtersSegment = UISegmentedControl(items: items) filtersSegment.frame = CGRect.init(x: 0, y: 0, width: 300, height: 50) filtersSegment.selectedSegmentIndex = 0 filtersSegment.tintColor = UIColor.black filtersSegment.addTarget(self, action: #selector(self.filterApply), for: UIControlEvents.valueChanged) self.view.addSubview(filterSegment) @objc private func filterApply(segment: UISegmentedControl) -> Void { switch segment.selectedSegmentIndex { case 1: //Do something for Orange case 2: //Do something for Grapes case 3: //Do something for Banana default: //Do something for All Fruits } } 

这将适用于所有types的iOS设备:

 UISegment *segment = [[UISegmentedControl alloc] initWithItems:array]; segment.frame = CGRectMake(0, self.view.frame.size.height - 40, 300, 40); UIFont *font = [UIFont fontWithName:@"DroidSans" size:18.0f]; NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; [segment setTitleTextAttributes:attributes forState:UIControlStateNormal]; [segment addTarget:self action:@selector(segmentAction:) forControlEvents: UIControlEventValueChanged]; [self.view addSubview:segment];