2009-08-21 3 views
13

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

Я рассматриваю два варианта.

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

Я мог бы также начать с подкласса UIView и создать его с нуля. Я полагаю, было бы легче делать такие вещи, как переходная анимация, но мне нужно было бы создать собственное управление касанием.

Как вы думаете, лучший? Или вы знаете лучший способ? (Возможно, в Интернете есть открытый или свободный доступ?)

EDIT: Я не хочу использовать UISwitch, потому что хочу, чтобы моя кнопка переключения выглядела так. Я хочу, чтобы это была большая прямоугольная кнопка и изменила фон, чтобы указать состояние.

Спасибо!

ответ

4

Вы можете использовать UIButton и установите его свойство enabled.

В интерфейсе Builder вы можете установить отдельные изображения для разрешенных и отключенных состояний, а IBAction изменить свойство.

+0

Это умно. Спасибо! –

+12

Мне было интересно, почему вы выбрали свойство 'enabled' вместо' selected'? Прочитав этот совет некоторое время назад, я реализовал его сегодня, используя 'selected'. Прекрасно работает. Затем я перечитал подсказку и попробовал «enabled». После того как вы отключены, вы больше не можете нажимать кнопку, так что это не очень удобно. Есть ли какие-то настройки, которые я пропустил? – slothbear

+0

Вы правы, я предложил это в комментарии к другому ответу. –

0

Нет ли кнопки переключения, или я чего-то не хватает здесь?

EDIT: Как говорили другие, это называется UISwitch, и оно включает и выключает.

+0

'UISwitch' является способ реализации переключая –

+0

Спасибо. Я не мог вспомнить точное имя, и у меня нет iPhone SDK, установленного в этой системе. – Cinder6

0

Может быть я не понимаю вопрос правильно ..why вы не используете UISwitch

0

Я тоже смотрел UISwitch, но в моем случае я не хочу кнопку включения/выключения, мне очень нужна кнопка переключения. То, что я пытаюсь сделать, снова в моем случае, имеет блок кнопок, которые выглядят как UISegmentedControl, но где пользователь может «переключать» более одной из кнопок на элементе управления за один раз. Проблема, которую я пытаюсь решить, заключается в том, что у меня ОЧЕНЬ ограниченная экранная реальность и много переключений, чтобы попасть на экран.

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

К сожалению, UISwitch не всегда соответствует спецификациям пользовательского интерфейса, которые имеют в виду, поэтому я думаю, что джентльмен, который разместил оригинальное сообщение, тоже не искал переключатель On/Off, а скорее хотел кнопку, которая изменила его состояние как-то.

0

Мне тоже нужно это сделать. Не установил бы включенное состояние NO, чтобы предотвратить переключение кнопки?

UPDATE

Люди предполагают UISwitch, но это может быть кожа со всеми соответствующими вверх, над, инвалидов, selectedUp, SelectedOver, selectedDisabled состояний?

+0

Да, так что я закончил делать с использованием свойства «selected», которое, насколько я знаю, на самом деле ничего не делает для UIButton's. –

+0

Поддерживает ли UIButton все состояния кнопок переключения для скининга. Простите мое невежество, поскольку я рассматриваю это как разработчика Flex. В Flex у ToggleButton есть обычные вышеперечисленные, отключенные состояния, но затем также выбраноUp, selectedOver, selectedDisabled и т. Д. Вам понадобится все эти состояния для создания правильного переключения. И да, вам также нужно выбранное свойство. Если это существует в UIButton, это предполагает, что вы можете активировать переключение. Это так? –

+0

Нет, я не верю. Но то, что вы можете сделать, это перезаписать метод setSelected: и изменить стиль там. –

2

Просто сделайте метод (IBAction), а также BOOL. Установите для BOOL по умолчанию значение FALSE. Ваш IBAction должен выглядеть следующим образом:

- (IBAction) .... { 

    if (bool) { 
     // do your things 
    } 

    else { 
     // do your things 
    } 

    bool =! bool 
} 

Это работает для меня!

+1

Это будет работать, но это не очень-довольно. –

13
-(IBAction)toggle{ 
    if (button.selected == NO) { 
     button.selected = YES; 

    } 
    else { 
     button.selected = NO; 
    } 
} 

или

-(IBAction)toggle:(UIButton*)sender 
{ 
sender.selected = !sender.selected; 
} 

простой чувак

+8

что, если 'button.selected =! Button.selected;' самый простой чувак! : D –

+0

hmm thats good :) – Mashhadi

+1

Еще лучше: '- (IBAction) toggle: (UIButton *) отправитель { sender.selected =! Sender.selected; } ' – AlexChaffee

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