Хорошо ли иметь IBOutlet
и IBAction
одной и той же кнопки в tableviewcell
?
Когда бывают случаи, когда у людей IBOutlets
в ячейке, а IBAction
в viewcontroller
?
Спасибо!
Хорошо ли иметь IBOutlet
и IBAction
одной и той же кнопки в tableviewcell
?
Когда бывают случаи, когда у людей IBOutlets
в ячейке, а IBAction
в viewcontroller
?
Спасибо!
Во-первых, вам нужно понять, как использовать IBOutlet и IBAction. Они используются по совершенно разным причинам. Мы используем IBOutlet, чтобы помочь разработчику интерфейса распознать ссылочные переменные для элементов пользовательского интерфейса, и мы используем IBAction, чтобы помочь разработчику интерфейса распознать события/действия. Таким образом, у вас нет причин не указывать IBOutlet кнопки и IBAction этой кнопки в одном классе или в отдельных классах, таких как IBOutlet в классе TableViewCell и IBAction в контроллере представления, где загружается ваша ячейка.
Исходя из моего опыта, я бы сказал, что если у вас есть кнопка в ячейке представления таблицы и вы хотите запустить событие на основе нажатия этой кнопки, то на самом деле хорошо иметь метод действия в вашем классе CustomTableViewCell. Например, предположим, вы хотите изменить изображение кнопки при нажатии. В таком случае в вашем методе didSelectRowAtIndexpath вы можете изменить состояние выбора кнопки, в то время как вы можете проверить состояние выбора кнопки в своем методе IBAction в своем классе представления и установить изображение.
С другой стороны, если есть поток управления, основанный на нажатии кнопки, скажем, на основе нажатия кнопки вы переходите к другому контроллеру представления, тогда вы, вероятно, захотите установить IBAction в своем классе контроллера, поскольку вам нужно иметь доступ к вашему контроллеру навигации или контроллерам представления.
Итак, это зависит от того, какова цель вашего метода IBAction и какой доступ вам нужен для выполнения вашего действия.
Если вы выбрали подкласс uitableviewcell для пользовательских ячеек с файлами .h и .m, вам следует определить IBOutlet в файле .h, и когда вы хотите определить его действие, вы можете определить его в методе cellForRowAtIndexPath: и вручную определить его цель метод. Если вы определите этот метод в uiviewcontroller, он будет выполнять одно и то же действие для всех действий кнопки.
Можно ли использовать IBOutlet и IBAction в одной и той же tableViewCell?
Да, вы можете использовать.
Хорошо ли иметь IBOutlet и IBAction одной и той же кнопки в tableviewcell?
По моему мнению, если вы используете IBAction в UIViewController
, это было бы лучше по сравнению с UITableViewCell
, потому что, если вы хотите выполнить что-то для события с данными (определенными в ViewController
), в этом случае вы можете легко выполнить это, вам не нужно управлять им глобально эти данные, но если вы хотите что-то сделать с событием в ячейке, в этом случае вам нужно управлять этими данными либо глобально, либо с помощью делегата.