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

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

Жанры

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

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

Шрифт:

forIndexPath: indexPath];

cell.textLabel.text = [[NSString alloc]

initWithFormat:@"Section %ld Cell %ld",

(long)indexPath.section,

(long)indexPath.row];

return cell;

}

— (void)viewDidLoad{

[super viewDidLoad];

self.myTableView = [[UITableView alloc]

initWithFrame: self.view.bounds

style: UITableViewStylePlain];

[self.myTableView registerClass: [UITableViewCell class]

forCellReuseIdentifier: CellIdentifier];

self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleHeight;

self.myTableView.dataSource = self;

self.myTableView.delegate = self;

[self.view addSubview: self.myTableView];

}

Теперь реализуем три упомянутых ранее метода, определенных в протоколе UITableViewDelegate, и просто преобразуем доступные действия (типа SEL) в строку, после чего выведем доступные результаты на консоль:

— (BOOL) tableView:(UITableView *)tableView

shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath{

/* Разрешаем отображение контекстного меню для каждой ячейки */

return YES;

}

— (BOOL) tableView:(UITableView *)tableView

canPerformAction:(SEL)action

forRowAtIndexPath:(NSIndexPath *)indexPath

withSender:(id)sender{

NSLog(@"%@", NSStringFromSelector(action));

/* Пока разрешим любые действия. */

return YES;

}

— (void) tableView:(UITableView *)tableView

performAction:(SEL)action

forRowAtIndexPath:(NSIndexPath *)indexPath

withSender:(id)sender{

/* Пока оставим пустым. */

}

А теперь запустим приложение в эмуляторе или на устройстве. После этого мы увидим, что в табличный вид загружены три ячейки. Удерживайте на ячейке палец (если работаете с устройством) или указатель мыши (если с эмулятором) и смотрите, какая информация появляется в окне консоли:

cut:

copy:

select:

selectAll:

paste:

delete:

_promptForReplace:

_showTextStyleOptions:

_define:

_addShortcut:

_accessibilitySpeak:

_accessibilitySpeakLanguageSelection:

_accessibilityPauseSpeaking:

makeTextWritingDirectionRightToLeft:

makeTextWritingDirectionLeftToRight:

Все это действия, которые система iOS позволяет вывести на экран для пользователя, если такие действия вам понадобятся. Допустим, вы хотите разрешить пользователям операцию копирования (Copy). Для этого перед отображением команды просто найдите в методе tableView: canPerformAction: forRowAtIndexPath: withSender:, на какое действие запрашивает у вас разрешение система iOS, а потом верните значение YES или NO:

— (BOOL) tableView:(UITableView *)tableView

canPerformAction:(SEL)action

forRowAtIndexPath:(NSIndexPath *)indexPath

withSender:(id)sender{

if (action == @selector(copy:)){

return YES;

}

return NO;

}

На следующем этапе перехватываем информацию о том, какой именно элемент был выбран пользователем в контекстном меню. В зависимости от того, что выяснится, мы можем совершить нужное действие. Например, если пользователь выберет в контекстном меню команду Copy (Копировать) (рис. 4.11), мы воспользуемся UIPasteBoard, чтобы скопировать эту ячейку в компоновочный буфер и иметь возможность применять ее позже:

— (void) tableView:(UITableView *)tableView

performAction:(SEL)action

forRowAtIndexPath:(NSIndexPath *)indexPath

withSender:(id)sender{

if (action == @selector(copy:)){

UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath];

UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard];

[pasteBoard setString: cell.textLabel.text];

}

}

Рис. 4.11. Команда Copy (Копировать), отображенная в контекстном меню ячейки табличного вида

4.7. Перемещение ячеек и разделов в табличных видах

Постановка задачи

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

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

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

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

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга IV

Воин-Врач

Дмитриев Олег
1. Воин-Врач
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
6.00
рейтинг книги
Воин-Врач

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

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

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Источники силы

Amazerak
4. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Источники силы

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

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

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Черный Маг Императора 23

Герда Александр
23. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 23

Кодекс Охотника. Книга XIX

Винокуров Юрий
19. Кодекс Охотника
Фантастика:
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XIX

Мечник Вернувшийся 1000 лет спустя. Том 2

Ткачев Андрей Юрьевич
2. Вернувшийся мечник
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Мечник Вернувшийся 1000 лет спустя. Том 2

Личный аптекарь императора. Том 4

Карелин Сергей Витальевич
4. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 4

Кодекс Охотника. Книга XXIV

Винокуров Юрий
24. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXIV