UITableView работает в iOS 7, но не работает в iOS 8

Все еще новичок в программировании iOS здесь. Иметь UITableView, который отлично работает на iOS 7, но выглядит раздавленным в iOS 8. Несколько устройств. Также демонстрирует ту же проблему/разницу при использовании симуляторов (симуляторы iOS 7 и iOS 8).

Я использую Xcode 6 beta 6, Yosemite beta 6, iOS 7.12 и iOS 8 beta 5.

Я сделал код максимально простым и полным, чтобы показать проблему:

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

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        // Return the number of rows in the section.
        return [self.numberOfDays count];
    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier ];

        NSLog (@"%li", (long)indexPath.row);

        UILabel *label;
        label = (UILabel *)[cell viewWithTag:1];
        label.text = @"Monday";

        return cell;
    }

Обратите внимание на мой оператор NSLog. В моем UIViewTable 88 строк (0-87).

  • Когда эта таблица загружается в iOS 7...

    • I get 12 lines in my console
    • Что делает, поскольку это начальное количество видимых строк
    • Таблица прокручивается красиво и плавно... с миром все в порядке.
  • Когда эта таблица загружается в iOS 8...

    • I get 88 lines in my console
    • Что не имеет смысла, для меня во всяком случае
    • Первоначальный вид таблицы выглядит хорошо
    • например первые 12 строк отображаются правильно
    • Таблица прокручивается неправильно.
    • строки 12-87 имеют высоту около 1 пикселя.

Первоначальный вид таблицы выглядит нормально (например, первые 12 строк отображаются правильно), пока я не попытаюсь прокрутить ее. Затем появляются строки 12-87 высотой около 1 пикселя.

ПОЖАЛУЙСТА ПОМОГИ!

Хорошо. Достаточно просто добавить: tableView.rowHeight = 44; после моего статического NSString *CellIdentifier = @"Cell"; линия. Мне это не нужно, это iOS 7, не знаю, зачем мне это нужно в iOS 8.


person HirsuteJim    schedule 31.08.2014    source источник


Ответы (2)


ОК - это было так же просто, как добавить:

    tableView.rowHeight = 44; 

после моего

    static NSString *CellIdentifier = @"Cell"; 

линия. Мне не нужно было это iOS 7, не уверен, зачем мне это нужно в iOS 8.

person HirsuteJim    schedule 01.09.2014

Ваше решение может работать, но лучше реализовать метод heightForRowAtIndexPath

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
      return 44;
}

Я понятия не имею, почему существует разница между iOS 7 и 8, возможно, кто-то еще может пролить свет на это?

person Lope    schedule 06.10.2014