UITableView внутри UINavigationController не прокручивается - PullRequest
1 голос
/ 26 ноября 2011

У меня есть файл MainWindow.xib:

Внутри я определил UINavigationController как rootViewController для Window.UINavigationController имеет TableVC-элемент.

TableVC наследуется от UITableViewController и реализует соответствующие делегаты и источники данных.

Я перезаписываю 4 метода viewDidload для инициализации данных и:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return [data count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...
    cell.textLabel.text = [data objectAtIndex:indexPath.row];
    return cell;
}

Не думаю, что с этим что-то не так.

Когда я запускаю проект, появляется панель навигации и внутри TableView, заполненная моими данными.Но я не могу прокрутить таблицу!?

Любые подсказки приветствуются.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2011

РЕДАКТИРОВАТЬ:

Я только что заметил комментарий Warkst, и я понял, что вы ошиблись ваш код.Я не уверен, если это вызывает проблему или нет, но вы должны исправить это.

Эта строка здесь:

cell.textLabel.text = [data objectAtIndex:indexPath.row];

Должно быть

cell.textLabel.text = [data objectAtIndex:indexPath.section];

Так как вы используетестроки, а не секции.

Это означает, что вы получаете одинаковые данные в каждой строке, поскольку indexPath.row всегда будет равно нулю.


Во-первых, я бы предложил не использовать UITableViewController.Вместо этого добавьте UITableView внутри вида UIViewController.Это сделает намного более гибким, если вам нужно переместить стол позже.

Теперь существует несколько причин, по которым вы не можете осуществлять прокрутку.

  1. Он считает, что прокручивать не нужно, то есть размер контента не больше размера кадров.

    Я не думаю, что это так, потому что табличное представление само это решает.Но попробуйте зарегистрировать фрейм и размер содержимого просто увеличьте.

  2. Он не получает сенсорные события.

    Это может быть из-за того, что некоторые другие виды захватывают события.Попробуйте переопределить касания, начались касания, закончились и т.д., просто зарегистрируйте событие и позвоните в Super.Вам нужно будет сделать подкласс UITableView.

    В противном случае может быть забавная структура представления.Если он находится за пределами рамки просмотра своего родителя, он не получит сенсорные события.Попробуйте переместить все это за пределы вида навигации в чистом виде, чтобы увидеть, исправляет ли это.

  3. Прокрутка отключена.

    Проверьте покупку, зарегистрируйте свойство на столе.view, scrollEnabled.

Вот и все, что я могу себе представить.дайте мне знать, как это происходит.

0 голосов
/ 26 ноября 2011

Проверьте метки:

- Scrolling Enabled
- User Interaction Enabled

для вашей таблицы. Просмотр в вашем nib-файле (конечно, используя IB)

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