Флажки iPhone а-ля Почта - PullRequest
1 голос
/ 23 июня 2010

После прочтения «Руководства по интерфейсу пользователя iPhone» я заметил, что там мало упоминаний о флажках в стиле, с которым они могут встретиться на рабочем столе или в Интернете.

Флажки обычно обрабатываются UISwitch s на iPhoneНо для приложения, над которым я сейчас работаю, они на самом деле не правильный контроль.Вместо этого элемент управления, который вы увидите в Почте, гораздо лучше подходит:

Флажки в Почте http://i45.tinypic.com/jj4l1k.png

Фактическая почта отключена.Очевидно.

Как мне использовать эти элементы управления флажками в моем приложении?Они стандартные или мне нужно имитировать их с помощью пользовательского элемента управления?

Приветствия, друзья.

Ответы [ 6 ]

3 голосов
/ 23 июня 2010

Вам нужно будет создать собственный элемент управления. Это не составит труда, поскольку UIControl уже имеет в своем распоряжении свойства «selected», «selected» и «state». Вам просто нужно рисовать и переключаться соответствующим образом.

2 голосов
/ 23 июня 2010

Не наследовать UIControl. То, что вы хотите, это UIButton "пользовательского" типа. Загрузите его с вашим «неосвещенным» изображением в IB (или программно в -viewDidLoad - вы также можете установить его в соответствии с его данными, если вы пришли сюда с этим свойством, уже «проверенным»).

Направьте его событие touchUpInside на метод с именем -(void)toggleCheckBox, и в этом методе переключите любую настройку, которую вы переключаете (вероятно, свойство BOOL объектов, которые вы перечисляете), и переключите состояние "светится / не светится" изображения кнопки, используя метод -setImage: forState:. Используйте состояние управления UIControlStateNormal.

Я делаю нечто похожее, когда я позволяю людям нажимать кнопку, чтобы переключать «любимый» статус вещи («thisEvent» - участник множества местных культурных / художественных мероприятий), на которые они смотрят:

- (IBAction)toggleFavorite {

    if (self.thisEvent.isFavorite == YES) {
        self.thisEvent.isFavorite = NO;
        [self.favoriteButton setImage:[UIImage imageNamed:@"notFavorite.png"] forState:UIControlStateNormal];
    }
    else {
        self.thisEvent.isFavorite = YES;
        [self.favoriteButton setImage:[UIImage imageNamed:@"isFavorite.png"] forState:UIControlStateNormal];

    }
}
1 голос
/ 23 июня 2010

Как уже было сказано, вам нужно создать подкласс UIControl. Фактический процесс обсуждался здесь w совсем недавно.

1 голос
/ 23 июня 2010

Я бы предпочел создать подкласс UITableViewCell, а не UIImageView. UITableViewCell уже поставляется с выбранными / невыбранными состояниями и обработчиками для режимов редактирования и т. Д.

1 голос
/ 23 июня 2010

Я почти уверен, что стандартного способа сделать это не существует. Однако это довольно просто сделать, все, что вам нужно, это два изображения, по одному для каждого состояния. Возможно, я бы сделал что-то простое, например, подкласс UIImageView, и добавил бы метод setState:(BOOL)theState, который затем просто выбрал бы соответствующее изображение.

0 голосов
/ 30 декабря 2012

Я также нашел описание другого способа сделать это, используя тот же образ / метод, который использует приложение Почта:

http://networkpx.blogspot.com/2009/07/multiple-row-selection-with-uitableview.html

но поскольку в нем реализованы недокументированные функции iOS SDK, он может оказаться не лучшим для приложений, предназначенных для официального магазина приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...