Как я могу получить кнопку удаления, чтобы показать при наведении на UITableViewCell
? Событие никогда не вызывается и кнопка удаления никогда не появляется.
ios
uitableview
cocoa-touch
uikit
TheLearner
источник
источник
UITableViewCell
s.Ответы:
Во время запуска в
(-viewDidLoad or in storyboard)
do:Переопределить для поддержки условного редактирования табличного представления. Это нужно реализовать только в том случае, если вы собираетесь возвращаться
NO
за некоторыми предметами. По умолчанию все элементы доступны для редактирования.источник
self.tableView.allowsMultipleSelectionDuringEditing = NO;
левое движение для работы. Для меня это звучит как ошибка, потому что таблица НЕ находится в состоянии редактирования. Эта опция должна применяться только во время редактирования. Тем не менее, он работает сейчас, и я установил его в YES всякий раз, когда таблица переходит в состояние редактирования.Этот ответ был обновлен до Swift 3
Я всегда думаю, что хорошо иметь очень простой, автономный пример, чтобы ничего не предполагалось, когда я изучал новое задание. Это ответ для удаления
UITableView
строк. Проект работает так:Этот проект основан на примере UITableView для Swift .
Добавить код
Создайте новый проект и замените код ViewController.swift следующим.
Метод с одним ключом в приведенном выше коде, который позволяет удалять строки, является последним. Здесь это снова для акцента:
Раскадровка
Добавьте
UITableView
к View Controller в раскадровке. Используйте автоматическое расположение, чтобы прикрепить четыре стороны табличного представления к краям контроллера вида. Управляйте перетаскиванием из табличного представления в раскадровке на@IBOutlet var tableView: UITableView!
строку в коде.Законченный
Это все. Теперь вы сможете запустить свое приложение и удалить строки, проведя пальцем влево и нажав «Удалить».
вариации
Изменить текст кнопки «Удалить»
Добавьте следующий метод:
Пользовательские действия кнопок
Добавьте следующий метод.
Обратите внимание, что это доступно только в iOS 8. Смотрите этот ответ для более подробной информации.
Обновлено для iOS 11
Действия могут быть размещены в начале или в конце ячейки с помощью методов, добавленных в API UITableViewDelegate в iOS 11.
дальнейшее чтение
источник
UITableView
один , это совершенно самостоятельный проект , и вам не нужно ничего делать, не описанные здесь. Причина, по которой я начал устанавливать его в коде, заключается в том, что он требует меньше объяснений в моих ответах. Я должен вернуться и отредактировать основной пример, чтобы использовать код тоже.Этот код показывает, как реализовать удаление.
При желании в переопределении инициализации добавьте строку ниже, чтобы показать элемент кнопки «Редактировать»:
источник
У меня была проблема, которую мне только что удалось решить, поэтому я делюсь ею, так как она может кому-то помочь.
У меня есть UITableView и добавил показанные методы, чтобы разрешить удаление салфетки:
Я работаю над обновлением, которое позволяет мне перевести таблицу в режим редактирования и активирует множественный выбор. Для этого я добавил код из образца Apple TableMultiSelect . Как только я заработал эту работу, я обнаружил, что моя функция удаления перестала работать.
Оказывается, добавление следующей строки к viewDidLoad было проблемой:
С этой строкой мультиселект будет работать, но удаление не будет. Без линии все было наоборот.
Исправление:
Добавьте следующий метод в ваш viewController:
Затем в вашем методе, который переводит таблицу в режим редактирования (например, нажатием кнопки), вы должны использовать:
вместо:
Это означает, что множественный выбор включается только тогда, когда таблица находится в режиме редактирования.
источник
Ниже UITableViewDataSource поможет вам для удаления
arrYears является NSMutableArray, а затем перезагрузите tableView
стриж
источник
В iOS 8 и Swift 2.0 попробуйте это,
источник
Ответ @ Kurbz потрясающий, но я хочу оставить эту заметку и надеюсь, что этот ответ может спасти людей некоторое время.
У меня иногда были эти строки в моем контроллере, и они заставляли функцию свипирования не работать.
Если вы используете
UITableViewCellEditingStyleInsert
илиUITableViewCellEditingStyleNone
как стиль редактирования, то функция смахивания не работает. Вы можете использовать толькоUITableViewCellEditingStyleDelete
стиль по умолчанию.источник
Swift 4
источник
Кроме того, это может быть достигнуто в SWIFT с использованием метода следующим
источник
Свифт 3
Все, что вам нужно сделать, это включить эти две функции:
источник
Я знаю, это старый вопрос, но ответ @Kurbz просто нужен для Xcode 6.3.2 и SDK 8.3
Мне нужно добавить
[tableView beginUpdates]
и[tableView endUpdates]
(спасибо @ bay.phillips здесь )источник
Когда вы удаляете ячейку вашего табличного представления, вы также должны удалить объект массива с индексом x.
Я думаю, что вы можете удалить его, используя жест пальцем. Представление таблицы вызовет делегата:
После удаления объекта. Вы должны перезагрузить использование таблицы. Добавьте следующую строку в ваш код:
после этого вы успешно удалили строку. И когда вы перезагрузите представление или добавите данные в DataSource, объект больше не будет там.
Для всего остального правильный ответ от Курбца.
Я только хотел напомнить вам, что функции делегата будет недостаточно, если вы хотите удалить объект из массива DataSource.
Я надеюсь, что помог вам.
источник
[tableView reloadData]
звонить[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]
.источник
Swift 2.2:
источник
Для Swift, просто напишите этот код
Для Objective C, просто напишите этот код
источник
для кода swift4 сначала включите редактирование:
затем вы добавляете действие удаления к делегату редактирования:
источник
Swift 4,5
Чтобы удалить ячейку при пролистывании, есть два встроенных метода UITableView. Запишите этот метод в расширение DataSource TableView.
источник
Если вы используете расширяемые источники данных, вам придется переместить обратные вызовы делегатов в
UITableViewDiffableDataSource
подкласс. Например:источник