2010-02-05 4 views
36

Фактически название содержит мой вопрос. У меня есть UISegmentedControl, и вам нужно отменить выбор выбранной вкладки. Я пробовал:UISegmentedControl отменять выбор (сделать ни один из выбранных сегментов)

[menu setSelectedSegmentIndex:-1]; 

меню будучи UBOutlet для UISegmentedControl, но это дает мне исключение. У кого-нибудь есть идея? благодаря питер

+1

Что это исключение? – Giao

+8

Я бы также предложил использовать UISegmentedControlNoSegment вместо -1 - здесь это не проблема, но на всякий случай – Vladimir

+0

2010-02-05 11: 10: 16.799 Gazetapl [30839: 20b] *** - [NSCFArray length]: непризнанный селектор, отправленный в экземпляр 0x3d39ed0 [Сессия началась в 2010-02-05 11:10:16 +0100.] 2010-02-05 11: 10: 16.800 Gazetapl [30839: 20b] *** Прекращение действия приложения из-за unsached exception 'NSInvalidArgumentException', причина: '*** - [NSCFArray length]: непризнанный селектор отправлен в экземпляр 0x3d39ed0' 2010-02-05 11: 10: 16.802 Gazetapl [30839: 20b] Stack: ( – dusker

ответ

2

Я предположил бы, что вы назвали [myArray length] вместо правильного [myArray count] где-то в вашем коде. NSArray использует метод count, а не длину для количества содержащихся в нем элементов.

+1

привет, я надеваю Не понимаю, что это имеет отношение к uisegmentedcontrol – dusker

+1

Ничего напрямую, но на основании опубликованного вами исключения проблема не в UISegementedControl. Возможно, где-то в вашем обращении с чангом в выбранном сегменте вы получаете доступ к массиву. –

+2

Почему голос? Шахта - единственный ответ, который фактически решает проблему, с которой сталкивался даскер. –

30

Я думаю, вы пытаетесь создать мгновенный выбор в сегментированном управлении. В построителе интерфейса установите segmentedcontrol на мгновение. Или в коде вы можете сделать:

menu.momentary = YES; 
+0

thnx, это мне очень помогло :) – Madoc

+0

Мгновенная по-прежнему приведет к выбору сегмента при загрузке. Кроме того, использование Momentary должно быть только потому, что вы действительно хотите управлять Momentary сегментом, а не просто пытаться не отбирать сегмент. Используйте решение UISegmentedControlNoSegment. –

208

Правильный способ сделать это:

[menu setSelectedSegmentIndex:UISegmentedControlNoSegment]; 
+9

Я не понимаю, почему OP не выбирает этот ответ !. – Ali

+1

@ Али, потому что это был не его вопрос. Он уже делал это (в основном) правильно. Его проблема была в другом месте, как я объяснил. –

+0

Это правильный ответ.Обычный OP :) –

3

Теперь вы можете сделать это в Xcode 6 в интерфейсе строителя:

Deselect the 'Selected' option under segmented control behaviour in attributes inspector.

1

Быстрое решение: @IBOutlet weak var mySegmentedControl: UISegmentedControl! и mySegmentedControl.selectedSegmentIndex = -1.

14

Swift решение:

@IBOutlet weak var segmentedControl: UISegmentedControl! 

self.segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment 
Смежные вопросы