2013-10-14 30 views
0

我有一个按钮,我希望在选择3个分段控件时分别执行不同的代码。 EX)如果选择segment1,则按下按钮时将执行Code1。如果选择segment2,则按下按钮时将执行Code2。我以前没有使用Segmented Controls,任何人都知道如何做到这一点?针对每个分段控件段的不同按钮操作

回答

6

假设你有你的按钮目标的动作设置和一个IBOutlet到你的分段控制可以做到以下几点。

- (IBAction)buttonPressed:(UIButton *)sender 
{ 
    NSInteger selectedIndex = self.segmentedControl.selectedSegmentIndex; 
    switch(selectedIndex) 
    { 
     case 1: [self methodOne]; break; 
     case 2: [self methodTwo]; break; 
     case 3: [self methodThree]; break; 
     default : break; //Do nothing 
    } 
} 
+0

很遗憾,IB或Storyboard文件显然无法做到这一点。 (1) – Benjohn

1

只是做一个非常简单的方法: - 如果您已经采取segmentcontrol的出口,然后那样做如下: -

  NSInteger sel=[yourSegmentCntrl  
     selectedSegment]; 
     If (sel==1) 
     { 
     //write your code 
     } 
+0

像THT方式,您可以相应地检查你的条件 –

+0

是否Objective-C中有相当于Java脚本switch语句的?我认为这将是最有效的。否则,这就是我正在寻找的。 – MacBoss123541

+0

是的defintely,它有切换的情况下:)上面的示例只是为了方便理解。 –

0

由于我工作的这个最近我想我会添加其他的答案,可以帮助斯威夫特家伙出过渡到的OBJ-C。这有点更明确,并且与我们在Swift中看到的IBOutlets相匹配。

- (IBAction)segmentedControlAction:(id)sender { 

// This property can be a simple primitive. No need for an NSObject like NSInteger. 
int selectedIndex = self.segmentedControlOutlet.selectedSegmentIndex; 

switch(selectedIndex) 
{ 
    // Simply changing output to label 
    case 0: self.label.text = @"Segment 1 was selected"; 
     break; 
    case 1: self.label.text = @"Segment 2 was selected"; 
     break; 
    case 2: self.label.text = @"Segment 3 was selected"; 
     break; 
    case 3: self.label.text = @"Segment 4 was selected"; 
     break; 

    default : break; //Do nothing 
} 

}