簡體   English   中英

如何設置 UISegmentedControl 的默認狀態?

[英]How can I set the default state of a UISegmentedControl?

有沒有辦法在界面生成器的 UISegmentedControl 中設置起始選定段,或者我必須在代碼中設置? 如果它在代碼中,viewDidLoad 是設置它的最佳位置嗎?

從代碼中,你可以只做self.segmentedControl.selectedSegmentIndex = someDefaultIndex

您是否應該在viewDidLoad:設置它完全取決於您的應用程序的結構。 例如,如果您的應用程序是第一次啟動並加載視圖,並且需要將控件設置為它在應用程序上一次運行期間擁有的任何值,那么在那里進行操作肯定是有意義的。

在界面生成器中,當您在 UI 上選擇 UISegmentedControl 對象時,然后在屬性窗格中,在段控件中有段下拉菜單,選擇要選擇的段(0,1 等)並勾選其下方的“已選擇”選項。

通過 storyBoard 為 UISegmentedControl 選擇默認值

  1. 打開你的故事板並選擇 UISegmentedControl

在此處輸入圖片說明

  1. 選擇 UISegmentedControl 的屬性檢查器(在右上角)

在此處輸入圖片說明

  1. 搜索“段”屬性並打開下拉菜單。

在此處輸入圖片說明

  1. 選擇您要默認選擇的項目。

在此處輸入圖片說明

  1. 選中選中的復選框以設置默認選中。

在此處輸入圖片說明

如果您不使用故事板並且想像我一樣在一些設置/網絡之后設置默認索引,那么如果用戶沒有,這個小片段會選擇一些東西。 我把它放在我UISegmentedControl子類中,但你可以把它放在任何地方。 (斯威夫特 3 )

Decl: var UISegmentedControlNoSegment: Int { get }
Desc: A segment index value indicating that there is no selected segment. See selectedSegmentIndex for further information.

精簡版:

if selectedSegmentIndex == UISegmentedControlNoSegment {
    selectedSegmentIndex = initialIndex
}

更長的版本

func reloadData() {
    guard let numberOfItems = dataSource?.numberOfItems() else {
        return
    }

    removeAllSegments()

    for index in 0...numberOfItems {
        insertSegment(with: $image, at: index, animated: false)
    }

    if selectedSegmentIndex == UISegmentedControlNoSegment {
        selectedSegmentIndex = initialIndex
    }
}

單擊分段控件后,轉到創建分段的位置並選擇您想要的默認分段。 然后在它下面會有一個帶有“已選擇”的框。 選擇它,它將是默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM