2009-08-20 3 views
7

나는 -insertRowsAtIndexPaths : withRowAnimation을 사용하여 테이블에 삽입하는 숫자 행을 가지고 있으며 행을 왼쪽에서 들여 쓰기하여 나머지 셀과 구별하고 싶습니다. UITableViewCell의 indentationLevel 속성은 정확히 내가 필요로하는 것처럼 보이지만 아무 것도하지 않는 것 같습니다. 여기에 내가 들여 쓰기 수준을 설정하는 데 사용하고 코드 (도트 구문 차이를하지 않습니다)입니다 :indentationLevel 속성이 아무 것도 수행하지 않는 것으로 보입니까?

[cell setIndentationWidth:10]; 
[cell setIndentationLevel:1]; 

indentationLevel 내가 원하는 무엇인가, 아니면 다른 곳에서 찾고해야 하는가?

답변

0

내가 읽은 모든 것은 그것이 당신이 어떻게 해야하는지 제안합니다. 들여 쓰기를 설정 한 후에도 코드에서 동일한 포인터를 사용하여 새 셀을 만들지는 않았는지 확인하십시오. 들여 쓰기를 화면에서 더 눈에 띄는 더 큰 크기로 설정하려고 했습니까 (예 : 10 대신 100 픽셀).

+0

포인터를 말하면 식별자를 언급하지 않습니다. 그렇습니까? 내 셀은 같은 클래스의 모든 객체이므로 동일한 객체에 대한 포인터가 될 것이라고 상상합니다. 그러나 셀 식별자는 전체 indexPath를 기반으로하므로 각 셀마다 고유합니다. 그래도 들쭉날쭉 한 기쁨은 없습니다. – JoBu1324

+0

셀을 표시하기 위해 셀을 OS에 반환하기 전에 들여 쓰기 수준과 너비가 셀에 설정되었음을 확인했습니다. 무엇이 잘못 될 수 있습니까? – JoBu1324

1

셀에서 구현이 너무 많을 수 있습니다.

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     if (cell == nil) 
     { 
      cell = (UITableViewCell*)[[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"cellType01"] autorelease]; 
      [cell setIndentationLevel:indexPath.row]; 
      [cell setIndentationWidth:10]; 
      cell.selectionStyle = UITableViewCellSelectionStyleNone; 
      // Tag the view 
      [[[cell subviews] objectAtIndex:0] setTag:111]; 
      UILabel* labelView = [[UILabel alloc] initWithFrame: CGRectMake(cell.indentationLevel*cell.indentationWidth, 0, 300, 20)]; 
     } 
    } 
14

에 indentationLevel 및 indentationWidth 표준 항목 textLabel라는, detailTextLabel 및 이미지 뷰의 위치에 영향을 미칩니다. contentView의 프레임의 원점에는 영향을주지 않습니다.

(아마도 iPhone OS 2를 타겟팅하기 때문에) textLabel 등을 사용하지 않는 경우 이전 대답과 같이 들여 쓰기를 수동으로 처리해야합니다.

1

내 응용 프로그램과 비슷한 문제가 발생했습니다. 나는 사용자 정의 셀을 사용하지 않고 UITableView을 가지고있었습니다. 나는 UITableViewCell을 기본 스타일과 함께 사용했다. 내 - (UITableViewCell *)tableView: cellForRowAtIndexPath: 델리게이트 메소드에서 셀의 indentationWidthindentationLevel을 설정했습니다. 그들은 아무것도하지 않았다. 심지어 - (NSInteger)tableView: indentationLevelForRowAtIndexPath: 대리자 메서드를 수정하려고했습니다. 아무것도.

마지막으로 작동 한 것은 스토리 보드로 이동하여 표보기 셀 자체의 속성을 수정하는 것이 었습니다. 들여 쓰기 너비를 설정하면 적절한 들여 쓰기가 시작되었습니다. indentationLevel 속성이 작동하기 시작했습니다. - (NSInteger)tableView: indentationLevelForRowAtIndexPath:조차 유용했습니다.

기본적으로 스토리 보드의 "들여 쓰기 너비"를 고려하여 indentationWidth 속성이 무시되는 것처럼 보입니다.

타겟팅 아이폰 OS 7이 사용자 정의 세포를 사용하지 않는 경우 아이폰 OS 7에서 버그가 수 있도록 나타납니다

3

엑스 코드 5.0.2로했다.

indentationLevel 또는 indentationWidth ~ tableView:cellForRowAtIndexPath: 중 하나를 설정하면 표시 할 때 셀의 레이아웃에 영향을주지 않습니다.

는 예를 들어, 다음 코드를 고려하십시오

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

    BOOL isIndented = indexPath.row % 2; 

    cell.textLabel.text = isIndented ? @"Indented" : @"Not indented"; 
    cell.indentationLevel = isIndented; 
} 

내가 스크린 샷을 게시 할 수있는 충분한 명성을 필요는 없습니다 만, 결과는 아이폰 OS 6 및 iOS 7이 엑스 코드 5와 아이폰 OS를 사용하는 사이에 다른 7 SDK.

+0

해결책이나 해결 방법을 제공 할 수 있습니까? –

+2

해결 방법은 기본 셀 스타일을 에뮬레이트하는 경우에도 사용자 지정 셀을 사용하는 것입니다. 스토리 보드 또는 Nib 파일을 사용하는지 여부에 따라 UITableViewCell의 새 하위 클래스를 만들고 프로토 타입 셀을 구성하거나 셀 하위 클래스에서 사용할 Nib 파일을 각각 등록하십시오. – Skyboat

0

이 질문은 4 세 알지만, 당신이있는 UITableViewCell, 의 사용자 지정 하위 클래스를 사용하여 이미을하는 경우와 당신은 이미 귀하의 의견을 추가하는 것은 contentView의 파단은 당신이 layoutSubviews을 무시하지 않는 확인으로 너의 세포. 그렇다면 layoutSubviews에있는 contentView의 범위/중심 또는 프레임을 수동으로 조정해야합니다.

관련 문제