IOS TableView высота строк - PullRequest
       3

IOS TableView высота строк

1 голос
/ 08 февраля 2012

мне нужно иметь 2 вида строк.Один с высотой 44 пикселя, а другой с разрешением 90 пикселей:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath   *)indexPath {
    if (indexPath.section == 0) 
        return 90.0;
    else
        return 44.0;
}

Проблема заключается в том, когда я вызываю - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath, потому что мне нужно добавитьв ячейку с 90px scrollView, которая имеет 90px высоты, но она добавляется в середине ячейки, а не вверху.

 if (indexPath.section == 0) {
        cell = [tableView dequeueReusableCellWithIdentifier:ScrolledCellIdentifier];
        if (cell == nil)
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ScrolledCellIdentifier];
        //cell.textLabel.text = @"hi";

        [cell addSubview:self.scrollView];
    }

Попытка установить textLabel ячейки работает, проблема заключается в добавленииscrollView.

Если я добавлю эту строку в код:

self.scrollView.frame = CGRectMake(0,-45, 320, 90);

Это прекрасно работает, но для меня это звучит странно.Что происходит?

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Он просто вписывает представление прокрутки в ячейку просмотра таблицы, независимо от того, является ли его высота 44 или 90.

1 голос
/ 08 февраля 2012

Я решил свою проблему, используя этот код:

cell = [tableView dequeueReusableCellWithIdentifier:ScrolledCellIdentifier];
if (cell == nil)
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ScrolledCellIdentifier];
cell.frame = CGRectMake(0, 0, 320, 90);
self.scrollView.frame = CGRectMake(0,0, 320, 90);
[cell addSubview:self.scrollView];

Я не знаю, если это не так, но это работает ...

1 голос
/ 08 февраля 2012

Установите рамку вашего scrollView на границы вашей ячейки, прежде чем добавить ее.

Итак

self.scrollView.frame = cell.bounds;
[cell addSubview:self.scrollView];

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

NSLog(@"Frame is: ", NSStringFromCGRect(self.scrollView.frame));

или определите хороший ярлык, так как я использую это все время

#define LogCGRect(rect) NSLog(@"CGRect:%@", NSStringFromCGRect(rect));

, тогда вы можете просто сделать

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