Как нарисовать динамическое количество столбцов в uitableviewcell для iphone в объективе c - PullRequest
1 голос
/ 04 августа 2011

Может кто-нибудь сказать мне, как создать динамическое количество столбцов в uitableviewcell, используя пользовательский класс для uitableviewcell. у меня есть 4 или 5 или 6 столбцов, и это не исправлено. так как рисовать столбцы.

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

    NSString *MyIdentifier =[NSString stringWithFormat:@"Cell%i",indexPath.row];

    CustomCells *cell = (CustomCells*)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {

        cell = [[[CustomCells alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
    }

    else{
        [[[cell contentView] subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)];

    }
    for (int i = 0; i < noOfColumns; i++) {

        label= [[UITextView alloc] initWithFrame:CGRectMake(20+(i*columnWidth) , 0 ,(highestWidth + 20), tableView.rowHeight)]; 

        label.frame =CGRectMake(20+(i*columnWidth) , 0 ,(highestWidth + 20), tableView.rowHeight);
        label.text = [[searchedWords objectAtIndex:indexPath.row + (i*dividedWords)] texts];

        label.font = [UIFont fontWithName:@"Papyrus" size:(20.0)];
        label.textColor =[UIColor blackColor];
        label.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight; 
        label.editable = NO;

        label.opaque =YES;

        [cell.contentView addSubview:label];

    }

}

return cell;
}

Ответы [ 5 ]

1 голос
/ 04 августа 2011

@ даршан прав. В iPhone нет понятия колонок. Вам нужно использовать несколько простых графических методов для рисования прямоугольников / линий. А затем покажите свой ярлык / текстовое представление в этом прямоугольнике. Итак, должна выглядеть таблица столбцов и строк.

Я реализовал то же самое, но не могу дать вам полный код. Просто создайте пользовательский UITableViewCell (создайте его подкласс). И напишите в нем следующие методы

 - (void)addColumn:(CGFloat)position 
 {
if(columns == nil)
{
    columns = [[NSMutableArray alloc]init];
}
     [columns addObject:[NSNumber numberWithFloat:position]];
 }

- (void)drawRect:(CGRect)rect 
{

  CGContextRef ctx = UIGraphicsGetCurrentContext();
  // Use the same color and width as the default cell separator for now
  // CGContextSetRGBStrokeColor(ctx, 0.5, 0.5, 0.5, 1.0);
  CGContextSetRGBStrokeColor(ctx, 0, 0, 0, 1.0);
  CGContextSetLineWidth(ctx, 0.50);

  for (int i = 0; i < [columns count]; i++) {
    CGFloat f = [((NSNumber*) [columns objectAtIndex:i]) floatValue];
    CGContextMoveToPoint(ctx, f, 0);
    CGContextAddLineToPoint(ctx, f, self.bounds.size.height);
  }

  CGContextStrokePath(ctx);

  [super drawRect:rect];
}
0 голосов
/ 29 января 2014

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

IPAD-динамическая таблица-Cells

0 голосов
/ 06 августа 2011

Вы не можете создавать столбцы в UITableView.для более подробной информации: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITableView_Class/Reference/Reference.html

0 голосов
/ 04 августа 2011

Я бы создал несколько ячеек - ячейку с четырьмя столбцами, ячейку с тремя столбцами и т. Д. И выбрал бы правильную ячейку в cellForRowAtIndexPath.

0 голосов
/ 04 августа 2011

На самом деле в UITableView iPhone нет понятия колонок.Вы можете создать свой собственный UITableViewCell и добавить к нему подпредставления, чтобы создать желаемую ячейку.Итак, что вы можете сделать, это создать свою собственную ячейку табличного представления, добавить в нее нужные подпредставления, а затем во время выполнения вы решите, какие представления показать или скрыть.Вы можете сделать это в методе cellForRowAtIndexPath.

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