Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

NSString *sectionNameInDictionary =

self.dictionaryOfNumbers.allKeys[section];

NSArray *sectionArray = self.dictionaryOfNumbers[sectionNameInDictionary];

return sectionArray.count;

}

— (UITableViewCell *) tableView:(UITableView *)tableView

cellForRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell *cell = nil;

cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier

forIndexPath: indexPath];

NSString *sectionNameInDictionary =

self.dictionaryOfNumbers.allKeys[indexPath.section];

NSArray *sectionArray = self.dictionaryOfNumbers[sectionNameInDictionary];

NSNumber *number = sectionArray[indexPath.row];

cell.textLabel.text = [NSString stringWithFormat:@"%lu",

(unsigned long)[number unsignedIntegerValue]];

return cell;

}

— (NSString *) tableView:(UITableView *)tableView

titleForHeaderInSection:(NSInteger)section{

return self.dictionaryOfNumbers.allKeys[section];

}

Навигационная

кнопка связана с селектором deleteOddNumbersSection:. Этот метод нам сейчас предстоит запрограммировать. Цель метода, как видно из его названия [2] , — найти раздел, соответствующий всем нечетным числам в источнике данных, найти табличный вид, а потом удалить искомый раздел и из таблицы, и из источника данных. Вот как это делается:

2

Odd (англ.) — «нечетный», delete (англ.) — «удалить». — Примеч. пер.

— (void) deleteOddNumbersSection:(id)paramSender{

/* Сначала удаляем раздел из источника данных. */

NSString *key = SectionOddNumbers;

NSInteger indexForKey = [[self.dictionaryOfNumbers allKeys]

indexOfObject: key];

if (indexForKey == NSNotFound){

NSLog(@"Could not find the section in the data source.");

return;

}

[self.dictionaryOfNumbers removeObjectForKey: key];

/* Затем удаляем раздел из табличного вида. */

NSIndexSet *sectionToDelete = [NSIndexSet indexSetWithIndex: indexForKey];

[self.tableViewNumbers deleteSections: sectionToDelete

withRowAnimation: UITableViewRowAnimationAutomatic];

/* Наконец, убираем с навигационной панели кнопку,

так как она нам больше
не понадобится. */

[self.navigationItem setRightBarButtonItem: nil animated: YES];

}

Все довольно просто. Теперь, когда пользователь нажмет кнопку на навигационной панели, раздел Odd Numbers (Нечетные числа) исчезнет из табличного вида. Как видите, в процессе удаления раздела табличный вид анимируется. Это происходит потому, что мы передали анимационный тип UITableViewRowAnimationAutomatic параметру withRowAnimation: метода deleteSections: withRowAnimation: табличного вида. Теперь запустите приложение в эмуляторе iOS и выполните Debug — Toggle Slow Animations (Отладка — Включить медленную анимацию). Потом попробуйте нажать кнопку на навигационной панели и посмотрите, что происходит. Как видите, удаление сопровождается медленной анимацией (движением). Красиво, правда? Когда удаление завершится, приложение будет выглядеть, как на рис. 4.16.

Рис. 4.16. Раздел, содержащий нечетные числа, удален из табличного вида

Вы уже знаете, как удалять разделы из табличных видов. Перейдем к удалению ячеек. Мы собираемся изменить функциональность навигационной кнопки так, чтобы при ее нажатии во всех разделах табличного вида удалялись все ячейки, содержащие числовое значение больше 2. Таким образом, мы удалим все четные и нечетные числа больше 2. Итак, изменим навигационную кнопку в методе viewDidLoad контроллера вида:

— (void)viewDidLoad {

[super viewDidLoad];

self.barButtonAction =

[[UIBarButtonItem alloc]

initWithTitle:@"Delete Numbers > 2"

style: UIBarButtonItemStylePlain

target: self

action:@selector(deleteNumbersGreaterThan2:)];

[self.navigationItem setRightBarButtonItem: self.barButtonAction

animated: NO];

self.tableViewNumbers = [[UITableView alloc]

initWithFrame: self.view.frame

style: UITableViewStyleGrouped];

self.tableViewNumbers.autoresizingMask =

UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleHeight;

self.tableViewNumbers.delegate = self;

self.tableViewNumbers.dataSource = self;

[self.view addSubview: self.tableViewNumbers];

}

На рис. 4.17 показано, как выглядит приложение при запуске в эмуляторе iPhone.

Рис. 4.17. Кнопка, удаляющая все ячейки с числами больше 2

Теперь кнопка навигационной панели связана с селектором deleteNumbersGreaterThan2:. Селектор — это метод, реализованный в контроллере вида. Но прежде, чем перейти к его программированию, определим, что этот метод должен сделать.

Поделиться:
Популярные книги

На границе империй. Том 10. Часть 8

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 8

Неучтенный элемент. Том 4

NikL
4. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 4

Бастард

Майерс Александр
1. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Двойник Короля

Скабер Артемий
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля

Дважды одаренный. Том VI

Тарс Элиан
6. Дважды одаренный
Фантастика:
аниме
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
Дважды одаренный. Том VI

Эпоха Опустошителя. Том III

Павлов Вел
3. Вечное Ристалище
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эпоха Опустошителя. Том III

Законник Российской Империи

Ткачев Андрей Юрьевич
1. Словом и делом
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Законник Российской Империи

Локки 9. Потомок бога

Решетов Евгений Валерьевич
9. Локки
Фантастика:
фэнтези
попаданцы
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Локки 9. Потомок бога

Тыл-фронт

Головин Андрей
Проза:
военная проза
проза прочее
5.00
рейтинг книги
Тыл-фронт

Прапорщик. Назад в СССР. Книга 6

Гаусс Максим
6. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 6

Наследник

Назимов Константин Геннадьевич
3. Травник
Фантастика:
фэнтези
6.80
рейтинг книги
Наследник

Дважды одаренный

Тарс Элиан
1. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Дважды одаренный

Я – Легенда

Гарцевич Евгений Александрович
1. Я - Легенда!
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00
рейтинг книги
Я – Легенда