UITableviewController теряет ссылку на просмотр таблицы - PullRequest
2 голосов
/ 06 августа 2011

Я работаю над этим уже 2 дня, кажется, не могу понять.Я пропускаю что-то очень простое, я думаю.

Вот что у меня есть:

UIViewController в качестве корневого контроллера приложений.Есть ContainerView, подкласс UIView, который я добавляю к своему представлению корневого контроллера.В этом я хочу UITableView.

Так как есть несколько разных контейнеров, у меня есть разные Nib для каждого.

Вот как его проводная: Nib с контентом, имеет контейнер в качестве владельца своего файла.У UITableView есть выход, у него есть контейнер в качестве источника и делегата.

Контейнер реализует методы протокола.

Теперь я не могу вызвать reloaddata для UITableView, поскольку он равен nil.Я набираю po в consolo, и он говорит 0x0, но я не знаю почему.

Я пробовал разные подходы, но все закончилось потерей ссылки на tableView.

Не то чтобы это был мой первый просмотр таблицы, который я создаю, но я понятия не имею, что яздесь неправильно.

Любая ПОМОЩЬ, пожалуйста !!!!

Код:

Это мой выход:

IBOutlet UITableView *contactsTV;

Владелец файла имеет связь с ним,tableview наоборот.

Я создаю перо, выполняя:

    Contentview *v = [[Contentview alloc] initWithFrame:[[contentViewArray objectAtIndex:i] CGRectValue]];

, а contentViewArray - это некоторый массив, хранящий значения Framevalue в виде строк.Затем я делаю:

[v prepareView];

и это выглядит так:

- (void) prepareView {

NSArray *mediaPlayerViews = [[NSBundle mainBundle] loadNibNamed:@"MyView" 
                                                          owner:self 
                                                        options:nil];

UIView *v = (UIView *)[mediaPlayerViews objectAtIndex:0];
[self addSubview:v];
}

Ответы [ 3 ]

2 голосов
/ 15 июля 2012

Только что столкнулся с подобной проблемой - все казалось правильно подключенным (Xcode 4), но ссылка на розетку была нулевой.

Когда я создавал файл, я использовал «Новый файл» -> подкласс UITableViewController. с NIB (автоматический) процесс для настройки файла. Это привело к тому, что контроллер был объявлен как UITableViewController, а NIB имел UITableView в качестве своего корневого элемента.

Хотя методы TableDataSource и TableDelegate были вызваны, как и ожидалось, выход для TableView никогда не устанавливался при загрузке пера.

Чтобы это исправить, мне в основном пришлось изменить контроллер с подкласса UITableViewController на просто UIViewController и соответственно установить NIB: я очистил NIB, добавил UIView с UITableView как дочерний элемент, заново подключил выходы (View, TableView, TableDataSource и TableDelegate), и все это работало, как планировалось.

Я думаю, что это может быть ошибка в XCode при создании подкласса UITableView с NIB.

0 голосов
/ 06 августа 2011

У вас есть свойство, установленное в заголовочном файле вместе с

IBOutlet UITableView *contactsTV

Если у вас нет метода установки для вашего contactsTV, то ваш contactsTV не будет сохранен вашим объектом.

Попробуйте заменить ваш код на

//header file
UITableView *contactsTV;
@property(nonatomic, retain) IBOutlet UITableView *contactsTV;

//implementation file
@synthesize contactsTV;
0 голосов
/ 06 августа 2011

Установите его как UITableViewController, оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...