【问题标题】:Push to segmented control segment by segment's title按段标题推送到分段控制段
【发布时间】:2016-03-27 07:28:15
【问题描述】:

我有一个包含 3 个段的 UISegmentedControl。一旦我的应用程序启动,应用程序会自动从段 1 开始。我希望我的应用程序从段 3 开始。我不想像这样简单地选择段数组的索引:

self.segmentedControl.selectedSegmentIndex = 2; 

我希望我的视图移动到包含某个标题的片段:

if (self.segmentControl.title isEqualToString:@"SomeTitle") {
     //Do something
}

有没有办法做到这一点?

【问题讨论】:

    标签: ios objective-c uisegmentedcontrol


    【解决方案1】:
    int index=-1;
        for (int i=0; i<3; i++) {
            if ([[segment titleForSegmentAtIndex:i] isEqualToString:@"SomeTitle"]) {
                index=i;
            }
        }
        segment.selectedSegmentIndex=index;
    

    【讨论】:

      【解决方案2】:

      1) 要在界面生成器中选择默认值,只需取消选中索引的选定属性即可。

      【讨论】:

        【解决方案3】:

        您可以显式调用分段控件的valueChanged操作方法。

        例如,您有一个 valueChanged 操作方法作为

        (IBAction)segmentIndexChanged:(UISegmentedControl *)sender {
           if (sender.title isEqualToString:@"SomeTitle") {
             //Do something
           }
        }
        

        那么方法调用就会

        self.segmentedControl.selectedSegmentIndex = 2; 
        [self segmentIndexChanged:self.segmentControl];
        

        【讨论】:

          【解决方案4】:

          不,没有办法做到这一点。最接近它的是#define 您正在使用它们的类中的索引。

          类似这样的:

          #define SomeTitle_Index 0 
          #define SomeOtherTitle_Index 1
          #define AnotherTitle_Index 2 
          

          然后选择它们将是这样的:

          [self.segmentedControl setSelectedSegmentIndex:SomeOtherTitle_Index];
          

          并检查索引:

          if (self.segmentedControl.selectedSegmentIndex == SomeOtherTitle_Index){
               //Do something 
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-05
            • 1970-01-01
            • 2014-12-11
            相关资源
            最近更新 更多