【问题标题】:How to handle events of multiple segmented control in a single view如何在单个视图中处理多个分段控件的事件
【发布时间】:2011-11-25 05:20:48
【问题描述】:

我的视图控制器视图中有 2 个分段控件。如何处理两个分段控制器的点击事件?

【问题讨论】:

    标签: iphone ios uisegmentedcontrol


    【解决方案1】:

    有两种方法可以做到这一点。

    1. 为每个段控件添加不同的操作
    2. 为每个段控件添加相同的操作并使用其标签检查哪个控件被点击。

      [yourSegmentedControl addTarget:self action:@selector(segmentSwitch:) forControlEvents:UIControlEventValueChanged];
      


      - (IBAction)segmentSwitch:(id)sender 
      {
          UISegmentedControl *segmentedControl = (UISegmentedControl *) sender;
      
          if(segmentedControl.tag == someTag)
          {
              if(segmentedControl.selectedSegmentIndex == 1)
              {
                  // your code
              }
              else if(segmentedControl.selectedSegmentIndex == 2)
              {
                  // your code
              }
          }
          else if(segmentedControl.tag == someTag)
          {
              if(segmentedControl.selectedSegmentIndex == 1)
              {
                  // your code
              }
              else if(segmentedControl.selectedSegmentIndex == 2)
              {
                  // your code
              }
          }
      }
      

    【讨论】:

      【解决方案2】:

      Apple 文档说:

      http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UISegmentedControl_Class/Reference/UISegmentedControl.html

      您使用 UIControlEventValueChanged 常量为分段控件注册目标操作方法,如下所示。

      [segmentedControl addTarget:self
                       action:@selector(action:)
             forControlEvents:UIControlEventValueChanged];
      

      因此,您只需为每个分段控件注册操作即可。

      【讨论】:

        【解决方案3】:

        将每个分段控件的tag 属性设置为不同的整数。然后在您设置为值更改时的操作的方法中,使用[sender tag] 检查tag 属性设置为哪个整数。

        【讨论】:

          【解决方案4】:

          您可以使用分段的选定模式:

          UISegmentedControl *tempSegment = sender;
          if ([tempSegment selectedSegmentIndex] == 0){
              //first Action
          }
          else if ([tempSegment selectedSegmentIndex] == 1){
              //second Action
          
          }
          

          【讨论】:

            【解决方案5】:

            为这些分段控件分配两个不同的操作:

            [segmentedControl addTarget:self
                             action:@selector(action:)
                   forControlEvents:UIControlEventValueChanged];
            

            【讨论】:

              【解决方案6】:

              Swift 版本:

               @IBAction func yourFunctionName(sender: UISegmentedControl) {
              
                      if (sender.selectedSegmentIndex == 0){//choice 1
              
                      }else{//choice 2
              
                  }
              }
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-01-12
                • 2013-01-18
                • 1970-01-01
                • 2017-10-12
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多