是否可以使分段控件的一段不可见?
答案 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)
}