2011-08-04 2 views
1

uitableviewcell의 사용자 정의 클래스를 사용하여 uitableviewcell에서 동적 열 수를 만드는 방법을 알려줄 수있는 사람이 있습니까? 나는 4 또는 5 또는 6 열을 가지고 있으며 고정되어 있지 않습니다. 어떻게 열을 그릴 것인가.iptableviewcell에서 i 객관적인 c의 iuitableviewcell에 동적 수를 그리는 방법

- (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; 
} 

답변

1

@ darshan이 옳습니다. iPhone에는 열 개념이 없습니다. 직사각형/선을 그리려면 간단한 그래픽 방법을 사용해야합니다. 그런 다음 해당 rect에 레이블/텍스트 뷰를 표시하십시오. 따라서 표의 열은 & 행이어야합니다.

나는 동일한 것을 구현했지만, 당신에게 완전한 코드를 제공하지 못한다. 사용자 지정 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

HeyThanks.But 그래픽을 사용하면 너무 복잡합니다. – Prerna

+0

아니 .. 전혀 ... & 다른 방법은 없습니다. (내 가정에 따라). –

0

사실 iPhone의 UITableView에는 열 개념이 없습니다. 당신은 당신 자신의 커스텀 UITableViewCell을 생성 할 수 있고 서브 뷰를 추가하여 원하는 셀을 만들 수 있습니다. 따라서 사용자 정의 테이블 뷰 셀을 만들고 원하는 하위 뷰를 추가 한 다음 런타임에 표시하거나 숨길 뷰를 결정할 수 있습니다. 당신은 cellForRowAtIndexPath 메소드에서 그렇게 할 수 있습니다.

+0

나는, 내가 그것을 ALLOC 할 때마다 나누었다 하위 뷰로서 uitextview 사용한 위의 코드 above.In 내 질문에 업데이트 한 어떤 코드를 작성했습니다. 당신이 내 텍스트 뷰를 한 번만 재사용 할 수있는 방법을 말해 줄 수 있습니까? – Prerna

+0

당신의 코드는 Textview의 할당 때문에 느리지 만 사용중인 MyIdentifier 때문에 발생합니다. 당신은 모든 셀마다 그것을 개별적으로 창조합니다. 그래서 언제나 프레임 워크는 셀을 재사용하는 대신 새로운 셀을 생성해야합니다. 그 때문에 당신의 tableview 내 인구 천천히. –

+0

NSString * MyIdentifier = @ "Cell"을 사용하더라도; 나는 똑같은 문제를 겪고있다. – Prerna

0

필자는 4 개의 열 셀, 3 개의 열 셀 등 여러 개의 셀을 작성하고 cellForRowAtIndexPath에서 올바른 셀을 선택합니다.

+0

그러나 셀의 너비를 고정 할 수 없기 때문에 이러한 셀이 겹칩니다. – Prerna

+0

테이블 뷰의 각 행마다 하나의 셀이 있습니다. 셀을 유연한 너비로 만들려면 항목을 이동/크기 조정하면 인터페이스 빌더에서 간단한 셀을 만드는 대신 하위 클래스로 코드에 셀을 작성해야 할 수 있습니다. – ader

0

아래 링크에서 매우 유용한 동적 테이블보기 구현 방법을 발견했습니다. 이렇게하면 셀에 추가해야하는 항목을 동적으로 제어 할 수 있습니다. 있는 tableview 내가를 havent 내 정의 셀 slow.In 매우되었다 있도록

iPad-Dynamic-Table-Cells

관련 문제