使分段控件的一部分不可见

时间:2011-11-21 08:56:27

标签: iphone objective-c ios uisegmentedcontrol

是否可以使分段控件的一段不可见?

4 个答案:

答案 0 :(得分:13)

虽然似乎无法在细分控件中隐藏细分,但您可以使用 removeSegmentAtIndex:animated: 方法从细分控件中删除细分。您需要 insertSegmentWithImage:atIndex:animated: insertSegmentWithTitle:atIndex:animated: 方法再次插入细分。

您可以考虑使用 setEnabled:forSegmentAtIndex: 方法启用/停用段,而不是隐藏/显示细分。

答案 1 :(得分:0)

如果您只想要一个片段,那么为什么要使用片段控制,您可以直接使用按钮..

答案 2 :(得分:0)

是的,请尝试为我工作,这只是一行代码,

目标C

Action CloseOne = new AbstractAction("CloseOne") {

    public Component getTextEdit ( Component comp) {
         if( comp instanceof TextEdit ) {
            return ( TextEdit  ) comp;
         } 
         if( comp.getParent() != null ) {
              return getTextEdit ( comp.getParent() );
         }  else {
              return null;
         }
    }
   @Override
    public void actionPerformed(ActionEvent e) {

         String indexStr = e.getActionCommand();
         int index=-1; 
         try {
              index = Integer.parseInt( indexStr );

         } catch( NumberFormatException ex ) {
         }
         if( index > -1 ) {
            TextEdit textEdit = getTextEdit( ( Component ) e.getSource() ) ;
              if( textEdit  != null ) {
                 textEdit.removeTabComponentAt( index );
              }
         }
    }
};

快速

 [self.segmentControl removeSegmentAtIndex:0 animated:NO];

该代码删除了 0 个索引段,并且仅显示了一个不可见的段。

希望这会有所帮助。

答案 3 :(得分:0)

以上结果都不适合我。减少宽度的那个不起作用,因为我已经设置

control.segmentDistribution = .fillEqually

对我有用的是重置段控件的计数。这是段的数据源为 ["Option 1", "Option 2", "Option 3"] 时的示例。假设您想删除“选项 2”:

var segmentDataSource = ["Option 1", "Option 2", "Option 3"]

segmentDataSource.remove(at: 1)

let oldSelectedSegment = control.selectedSegment

control.segmentCount = segmentDataSource.count
control.selectedSegment = max(0, oldSelectedSegment - 1)
for (index, option) in segmentDataSource.enumerated() {
    control.setLabel(option, forSegment: index)
}