2015-02-27 1 views
0

У меня есть UITableView, который перетаскивается в UIViewController и класс NSObject. Этот класс NSObject должен служить делегатом и источником данных для представления таблицы.NSObject как делегат для UITableView

Я попытался создать экземпляр NSObject и соответствующий делегат и источник данных для представления таблицы. Datasource работает нормально. Но cellForRowAtIndexPath: никогда не будет вызван, и все, что я получаю, это EXC_BAD ACCESS, и приложение просто останавливается прямо там. Но когда я перетаскиваю объект в нижнюю область UIViewController и давая ему имя класса и устанавливая делегат и источник данных, все работает хорошо и отображается UITableView.

Я не знаю, почему это странное поведение. Я сделал это в viewdidload класса viewcontroller.

customnsobject *custom=[customnsobject alloc]init]; 
tableview.delegate=custom; 
tableview.datasource=custom; 
+0

Вам нужно будет показать какой-то код, так как его трудно понять/понять, не видя. – Tim

+2

Возможно, у вас есть локальный экземпляр подкласса 'NSObject', который освобождается. Показать код из viewController, где вы создаете DataSource. – execv

+0

Если вы не держите ссылку на «custom» в этом случае, то в конце метода здесь он будет освобожден, поскольку и он «делегирует», и «источник данных» содержит только слабые ссылки. – darren102

ответ

0

создать родительский идентификатор в своем классе ч файл, как этот @property (неатомический, сохранить) идентификатор родительского; и в вашем представлении контроллер чуть ниже экземпляра nsobject, который вы создали, сделайте это custom.parent = self; Надеюсь, это сработает

+1

спасибо. это работает –