Могу ли я использовать IBOutlet и IBAction в одном и том же tableViewCell?

Хорошо ли иметь IBOutlet и IBAction одной и той же кнопки в tableviewcell?

Когда бывают случаи, когда у людей IBOutlets в ячейке, а IBAction в viewcontroller?

Спасибо!


person suitescripter123    schedule 09.11.2015    source источник
comment
я думаю от случая к случаю   -  person rnsjtngus    schedule 09.11.2015


Ответы (3)


Во-первых, вам нужно понять, как использовать IBOutlet и IBAction. Они используются по совершенно разным причинам. Мы используем IBOutlet, чтобы помочь разработчику интерфейса распознать ссылочные переменные для элементов пользовательского интерфейса, и мы используем IBAction, чтобы помочь разработчику интерфейса распознать события/действия. Таким образом, у вас нет причин не указывать IBOutlet кнопки и IBAction этой кнопки в одном классе или в отдельных классах, таких как IBOutlet в классе TableViewCell и IBAction в контроллере представления, где загружается ваша ячейка.

Исходя из моего опыта, я бы сказал, что если у вас есть кнопка в ячейке представления таблицы и вы хотите запустить событие на основе нажатия этой кнопки, то на самом деле хорошо иметь метод действия в вашем классе CustomTableViewCell. Например, предположим, вы хотите изменить изображение кнопки при нажатии. В таком случае в вашем методе didSelectRowAtIndexpath вы можете изменить состояние выбора кнопки, в то время как вы можете проверить состояние выбора кнопки в своем методе IBAction в своем классе представления и установить изображение.

С другой стороны, если есть поток управления, основанный на нажатии кнопки, скажем, на основе нажатия кнопки вы переходите к другому контроллеру представления, тогда вы, вероятно, захотите установить IBAction в своем классе контроллера, поскольку вам нужно иметь доступ к вашему контроллеру навигации или контроллерам представления.

Итак, это зависит от того, какова цель вашего метода IBAction и какой доступ вам нужен для выполнения вашего действия.

person Natasha    schedule 09.11.2015

Если вы выбрали подкласс uitableviewcell для пользовательских ячеек с файлами .h и .m, вам следует определить IBOutlet в файле .h, и когда вы хотите определить его действие, вы можете определить его в методе cellForRowAtIndexPath: и вручную определить его цель метод. Если вы определите этот метод в uiviewcontroller, он будет выполнять одно и то же действие для всех действий кнопки.

person Hima    schedule 09.11.2015

Можно ли использовать IBOutlet и IBAction в одной и той же tableViewCell?

Да, вы можете использовать.

Хорошо ли иметь IBOutlet и IBAction одной и той же кнопки в tableviewcell?

По моему мнению, если вы используете IBAction в UIViewController, это было бы лучше по сравнению с UITableViewCell, потому что, если вы хотите выполнить что-то для события с данными (определенными в ViewController), в этом случае вы можете легко выполнить это, вам не нужно управлять им глобально эти данные, но если вы хотите что-то сделать с событием в ячейке, в этом случае вам нужно управлять этими данными либо глобально, либо с помощью делегата.

person Dharmbir Singh    schedule 09.11.2015