2012-06-20 3 views
0

테이블 뷰를 만들고 uitableviewcell에 두 개의 uitextview를 추가하면 작동하지만 데이터로드시 전체 데이터가 표시되지 않습니다. 테이블 뷰를 스크롤하면 데이터가 셀에 표시됩니다.내가 클릭 할 때 uitableview가로드되지 않습니다.

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

{ 

static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier ]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 

    RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row]; 
    NSString *articleDateString = [dateFormatter stringFromDate:entry.articleDate]; 
    txtView1 = [[UITextView alloc]initWithFrame:CGRectMake(0, 10, 320,100)]; 
    txtView1.text =entry.articleTitle; 
    txtView1.editable = NO; 
    txtView1.font = [UIFont systemFontOfSize:20]; 
    txtView1.textColor = [UIColor blackColor]; 
    txtView1.delegate = self; 
    txtView1.textAlignment = UITextAlignmentLeft; 
    txtView1.scrollEnabled = NO; 
     int a= entry.articleSummary.length; 

    if(a < 100) 

    { 

    txtView2 = [[UITextView alloc]initWithFrame:CGRectMake(0, 70, 320, 100)]; 
    } 
    else if(a <200) 
    { 
     txtView2 = [[UITextView alloc]initWithFrame:CGRectMake(0, 70, 320, 300)]; 

    } 
else 

{ 

    txtView2 = [[UITextView alloc]initWithFrame:CGRectMake(0, 70, 320, 400)]; 
} 

    txtView2.text = entry.articleSummary; 
    txtView2.editable = NO; 
    txtView2.font = [UIFont systemFontOfSize:16];  
    txtView2.textColor = [UIColor blackColor]; 
    txtView2.delegate = self; 
    txtView2.textAlignment = UITextAlignmentLeft; 

    [cell.contentView addSubview:txtView1]; 
    [cell.contentView addSubview:txtView2]; 
return cell; 
} 
+1

당신이에 코드를 붙여 질문을 선택하고 "코드"버튼 (형식 표시 줄에서'{}'모양)을 사용하면이 코드 블록을 더 읽기 쉽게 만들어줍니다. :) –

답변

0

을 텍스트 뷰에 대한 .so를 사람을 바탕으로 유연한 셀 길이를 만들기 위해 뭐지이 문제가 말해, 어떻게 말해 줄 수 귀하의 NSStringsizeWithFont:constrainedToSize UITableViewCell 높이 재 크기 :

- (CGFloat)tableView:(UITableView *)tableView 
      heightForRowAtIndexPath:(NSIndexPath *)indexPath 
     { 
    CGSize textSize = {245.0, 20000.0f}; 
    CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:11.0f] 
        constrainedToSize:textSize 
         lineBreakMode:UILineBreakModeWordWrap]; 
    CGFloat hight = MAX(size1.height, 28); 

      return hight; 
} 
0

나는 잉크로 접근 방식이 충분하지 않습니다. UITextCell에 UITextView를 추가하려고하면 블록 내에 있어야합니다 : if (cell == nil). 커스텀 UITableView를 사용하는 것을 선호 할 것입니다. 튜토리얼 here을 찾고 UITableCell의 크기를 유지하려면 heightForRowAtIndexPath 대리자 메서드를 사용해야합니다.

0

이 코드는 다소 엉성합니다. 우선, 나는 아마도 이것을 완전히 다시 할 것입니다. 이렇게 즉시보기를 추가하는 대신 사용자 지정 UITableViewCell 하위 클래스를 만드는 것이 좋습니다.

현재 코드를 사용하면 테이블 셀을 "재사용"하는 IOS 기능을 제거하여 (잘못) 수정하려고 한 것처럼 보이는 것을 포함하여 많은 다른 문제가 발생할 것입니다. 이렇게하면 앱이 상당히 느려지 게됩니다. 특히 행 수가 적을 경우 특히 그렇습니다.

그래서 코드를 리팩터링하여 맞춤 UITableViewCell을 사용하고 있습니다. 그것이 첫 번째 단계입니다.

재사용 식별자를 사용하지만 불필요한 뷰를 즉시 추가하지 않도록 위의 코드를 변경하십시오.이 코드는 모두 사용자 정의 테이블 뷰 셀 클래스에 추가해야합니다.

그런 다음 @SenithilKumar가 제안한 방법을 구현해야합니다. 그러면 셀의 크기가 모든 텍스트에 맞게 조정됩니다. 하루가 긴 데이터 솔루션 didfinishLaunching에 self.window.rootViewController = navController; 추가 된 데이터의 smart load 코딩

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:vc]; 
    [self.window addSubview:navController.view]; 

행복

이후의 재 장전과 시도 후 나는 같은 문제가 있었다

관련 문제