Решение

We use cookies. Read the Privacy and Cookie Policy

Решение

Реализуйте следующие три метода протокола UITableViewDelegate в объекте-делегате вашего табличного вида.

• tableView: shouldShowMenuForRowAtIndexPath: — возвращаемое значение данного вида относится к типу BOOL. Если вернуть от этого метода значение YES, то система iOS отобразит для ячейки табличного вида контекстное меню. Индекс этой ячейки будет передан вам в параметре shouldShowMenuForRowAtIndexPath.

• tableView: canPerformAction: forRowAtIndexPath: withSender: — возвращаемое значение данного метода также относится к типу BOOL. Как только вы позволите iOS отображать контекстное меню для ячейки табличного вида, iOS вызовет этот метод несколько раз и сообщит вам селектор действия. После этого вы сможете решить, следует ли отображать это действие в командах контекстного меню. Итак, если iOS спрашивает вас, хотите ли вы отобразить для пользователя меню Copy (Копировать), то рассматриваемый метод будет вызван в объекте-делегате вашего табличного вида и параметр canPerformAction данного метода будет равен @selector(copy:). Подробнее этот вопрос рассматривается в подразделе «Обсуждение» данного раздела.

• tableView: performAction: forRowAtIndexPath: withSender: — как только вы разрешите отобразить определенное действие в списке вариантов контекстного меню ячейки табличного вида, возникает такая ситуация: когда пользователь выбирает это действие в меню, данный метод вызывается в объекте-делегате вашего табличного вида. Здесь нужно сделать все необходимое, чтобы удовлетворить пользовательский запрос. Например, если пользователь выбрал меню Copy (Копировать), то вы должны применить буфер обмена (Pasteboard), куда помещается содержимое из ячейки табличного вида.

Данный текст является ознакомительным фрагментом.