2016-09-03 2 views
0

можно выбрать индекс а сегмент, если я знаю свой индекс, используя что-то вроде:Выберите сегмент, используя название

@IBOutlet weak var tipSegment: UISegmentedControl! 
. 
. 
. 
tipSegment.setEnabled(true, forSegmentAtIndex: 1) 

Как я могу выбрать сегмент, если у меня есть только его название?

Один грубый способ состоит в том, чтобы иметь все заголовки в массиве, найти индекс заголовка, который у меня есть из массива, а затем использовать этот индекс, но я хотел бы увидеть, могу ли я избежать создания такого массива и просто включить ярлык, используя его название.

Проблема в том, что я загружаю заголовок из NSUserDefaults, где я не сохраняю индекс и просто хочу установить сегмент SegmentControl, который имеет этот заголовок при загрузке представления в первый раз.

ответ

5

Вместо сохранения названия в NSUserDefaults сохраните индекс!

В противном случае вам нужно будет позвонить titleForSegmentAtIndex: несколько раз, чтобы получить все заголовки сегментов и сравнить их с каждым. Это, безусловно, умело, но это будет очень быстро. Кроме того, заголовки локализуемы, но номера индексов инвариантны.

+1

ха-ха ... не уверен, почему это не пришло мне в голову. Спасибо @matt – baltoro

Смежные вопросы