Как надежно разделить UITableViewCell на подклассы для сгруппированного UITableView?

Когда Studio управления делает это, это составляет временную таблицу, копируя все через, отбрасывая Вашу исходную таблицу и переименовывая временную таблицу. Нет никакого простого эквивалентного оператора T-SQL.

, Если Вы не представляете себе делать это, Вы могли бы всегда создавать представление таблицы со столбцами в порядке, Вы хотели бы и использовали бы это?

Редактирование: избитый!

11
задан Alex Reynolds 17 October 2009 в 11:26
поделиться

3 ответа

Какая у вас проблема? В drawRect вам дается прямоугольник, и вы знаете свой общий размер - просто соответствуйте этому пространству. То же самое, если вы используете layoutSubviews.

-1
ответ дан 3 December 2019 в 06:46
поделиться

Я тоже заметил эту проблему. Мое обходное решение заключалось в том, чтобы просто уменьшить размер ячеек таблицы (ширина 300 вместо 320). Это не лучшее решение, но оно работает хорошо.

Я не верю, что вы можете избавиться от вставок табличных представлений на индивидуальной основе в "группированном" режиме. Хотя я могу ошибаться!

2
ответ дан 3 December 2019 в 06:46
поделиться

Раньше у меня было много проблем с подклассами UITableViewCell , но потом я просто перестал создавать подклассы. Добавление подпредставлений к свойству contentView объекта UITableViewCell , похоже, дает то же самое в любом случае, с которым я сталкивался, поэтому я просто делаю это внутри своего UITableViewController .

Вот пример с заголовком и значением:

- (UITableViewCell *)tableView:(UITableView*)tableView 
         cellForRowAtIndexPath: (NSIndexPath*)indexPath 
{    
    static NSString* CellIdentifier = @"AccountDetailsCell";
    UILabel* mainLabel = nil;
    UILabel* valueLabel = nil;
    const CGFloat kAccountDetailFontSize = 14.0;

    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
    if ( cell == nil ) 
    {
        cell = [[[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault 
                                       reuseIdentifier: CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        mainLabel = [[[UILabel alloc] initWithFrame:CGRectMake( 10.0, 0.0, 150.0, 44.0 )] autorelease];
        mainLabel.tag = MAINLABEL_TAG;
        mainLabel.font = [UIFont boldSystemFontOfSize: kAccountDetailFontSize];
        mainLabel.textAlignment = UITextAlignmentLeft;
        mainLabel.textColor = [UIColor darkGrayColor];
        mainLabel.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
        mainLabel.backgroundColor = [UIColor clearColor];
        [cell.contentView addSubview: mainLabel];

        valueLabel = [[[UILabel alloc] initWithFrame: CGRectMake( 150.0, 0.0, 150.0, 44.0 )] autorelease];
        valueLabel.tag = VALUELABEL_TAG;
        valueLabel.font = [UIFont boldSystemFontOfSize: kAccountDetailFontSize];
        valueLabel.textAlignment = UITextAlignmentRight;
        valueLabel.textColor = [UIColor darkTextColor];
        valueLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
        valueLabel.backgroundColor = [UIColor clearColor];
        [cell.contentView addSubview: valueLabel];
    }
    else
    {
        mainLabel = (UILabel*)[cell.contentView viewWithTag: MAINLABEL_TAG];
        valueLabel = (UILabel*)[cell.contentView viewWithTag: VALUELABEL_TAG];
    }

    mainLabel.text = (NSString*)kCellTitles[indexPath.section][indexPath.row];
    valueLabel.text = [self tableView: tableView valueLabelTextForRowAtIndexPath: indexPath];

    return cell;
}
8
ответ дан 3 December 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: