2012-05-15 4 views
1

Мне интересно, как это: enter image description hereUITableView Custom Class программно?

может быть сделано программно? Является ли это просто установкой источника данных uitableview и делегированием класса FadingTableView? Что именно происходит, устанавливая пользовательский класс в IB?

Спасибо.

ответ

3

Здесь вы сообщаете IB, что экземпляр представления таблицы фактически является экземпляром FadingTableView.
и если вы хотите, чтобы создать этот вид таблицы программно затем использовать эти строки

FadingTableView *tableView = [[FadingTableView alloc] init.....]; 

Почему вы установили, что класс IB потому, что IB имеет встроенные объекты, таким образом, UITableView, но вы хотите, чтобы ваш вид таблицы, которой нет в таким образом, вы помещаете свое имя класса там, чтобы оно создавало значение FadingTableView вместо UITableView.
И нет, он не используется для подключения источника данных или делегата.

0

Просьба подробно рассказать о вашем вопросе, поскольку это не значит, что это цель. Я думаю, вы просите разницу между подключением источника данных и делегатами через xib и объявлением его программным путем через класс. Между ними нет большой разницы но логически, если вы видите, что IBAction и IBOutlet являются только идентификаторами, чтобы компилятор знал, что объект был определен с помощью конструктора интерфейса (теперь он интегрирован с xcode в более поздних версиях xCode) .IBAction определяется как пустое, а IBOutlet только что определено. определение как: -

#ifndef IBOutlet 
#define IBOutlet 
#endif 

#ifndef 
IBAction #define 
IBAction void 
#endif 

Оба действуют как идентификаторы для компилятора, что это all.It просто сообщает компилятору, что некоторые методы определяются с помощью INTERF туз-строитель.

+0

жаль, если я был неясен. Я спрашиваю, как делать то, что происходит на экране выше, когда нет xib-файла для uitableview. – sixstatesaway

+0

sry не смог увидеть ur скриншот в моем браузере. –

0

В этом заключается использование подкласса UITableView (по-видимому), который вы предоставили в своем исходном коде, и его экземпляр при загрузке ниба. IT не означает, что подключены datasource и delegate.

Чтобы сделать то же самое в коде, вам нужно будет удалить TableView из xib-файла и создать его, например. в viewDidLoad ViewController, представляющий этот xib-файл, используя [[FadingTableView alloc] init…], установив frame, внешний вид, delegate, datasource и все остальные атрибуты вручную.

0

Вы можете использовать object_setClass(tableView, [CustomClass class]); и должны включать в себя #include <objc/runtime.h>