2013-10-07 8 views
-1

Объект UITableView, который у меня есть в моей раскадровке, теоретически должен иметь свой набор делегатов, но это не так. Я перетащил объект UITableView из раскадровки в заголовок и добавил его как свойство IBOutlet и синтезировал его. Тем не менее, я проверил и только метод источника данных называется. Так что что-то кажется неправильным в том, как я реализую основной протокол делегата. Как вы можете видеть на рисунках ниже, я, кажется, делаю все стандартно? Но делегат еще не установлен! Мысли?iOS - делегат UITableView не установлен?

Image 1

Image 2

Image 3

Image 4

+4

Вы можете вставлять коды, связанные здесь? Ваш код трудно прочитать на печатном экране. – Raptor

+0

Вы уверены, что ячейка прототипа по умолчанию (ячейка по умолчанию) доступна в виде таблицы? – Ganapathy

+0

@Ganapathy, как я могу проверить это? –

ответ

0

Попробуйте изменить метод numberOfRows (для лучшей отладки).

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    int rows = [allParties count]; 
    NSLog(@"number of rows: %d", rows); 
    return rows; 
} 

Если вы возвращаетесь 0, это не сработает.

Также в будущем, пожалуйста, вставьте свой код вместо снимков экрана.

0

Вы поместили журнал как в numberOfRowsInSection:, который вызывается, а не в cellForRowAtIndexPath:, который показывает, что ячейки для вашей таблицы не создаются. Вы просто возвращаете 0 как количество строк для таблицы. Проверьте это.

И будет вызываться метод делегата didSelectRowAtIndexPath:, когда вы выбираете строку, но для этого вы должны иметь строку сначала в своей таблице.

2

Я думаю, причина, по которой ваше решение не работает, связано с тем, что вы используете TableView внутри UiViewController вместо UiTableViewController. У меня была такая же проблема некоторое время назад. Вот что я сделал. Создайте IBOutlet в файл заголовка и синтезируйте его в файле реализации (я считаю, что вы уже выполнили этот шаг). Вернитесь к раскадровке. control + click на вашем столе и перетащите разъем в контроллер вида (желтый круг с белым ящиком). Выберите datasource. Повторите этот шаг еще раз и вместо выбора источника данных выберите делегат. В меню с правой стороны вы должны будете видеть свои розетки, если они настроены правильно. Это должно устранить ваши проблемы с делегатами.

Смотрите скриншот из моего примера ниже:

enter image description here

+0

Итак, я должен создать UITableViewController в дополнение к UITableView? Любая идея, почему, когда я не могу подключить представление таблицы с контроллером представления, как вы описали? –

+0

@JakeByman Теперь вам не нужен UITableViewController. Вы должны иметь возможность подключить ваш UIViewController, как описано. – Weston

+0

@JakeByman. После того, как вы «ctr + щелкните» и настройте свой источник данных и делегат, как описано выше, я удаляю 'self.mainTableView.delegate = self;' и 'self.mainTableView.dataSource = self;' из вашего файла реализации. – Weston

Смежные вопросы