2012-06-17 4 views
0

컨트롤러에 UITableView이 있습니다. UITableView의 셀에는 xib이 있습니다. 어떤 이유로 표가로드 될 때 셀의보기가 숨겨집니다.UITableViewCell이 숨겨져 있습니다.

셀을 선택할 수 있습니다. 셀이 nil이 아니며 뷰가 nil이 아닌 것을 볼 수 있습니다. 여전히 셀은 숨겨져 있습니다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
    NSString *cellIdentifier = @"CategoryCell"; 
    CategoryCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil){ 
     NSArray* topObjects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil]; 
     for (id obj in topObjects){ 
      if ([obj isKindOfClass:[CategoryCell class]]){ 
       cell = (CategoryCell*)obj; 
      } 
     } 
    } 

    id object; 
    if (indexPath.row < items.count) 
     object = [items objectAtIndex:indexPath.row]; 
    if ([object isKindOfClass:[MenuCategory class]]) { 
     // Configure the cell 
     MenuCategory *cellInfo = (MenuCategory *)object; 
     [cell setCategory:cellInfo]; 
     } 
    else if([object isKindOfClass:[MenuSubCategory class]]){ 
     // Configure the cell 
     MenuSubCategory *cellInfo = [self.items objectAtIndex:indexPath.row]; 
     [cell setSubCategory:cellInfo]; 
    } 
    return cell; 
} 
+0

호를 사용하고 있습니까? –

+0

아니요, 호를 사용하고 있지 않습니다 – Luda

+0

이 셀 = (CategoryCell *) [obj retain];을 유지해야합니다.이 문제는 해결되지 않을 수도 있지만 관계없이 유지해야합니다. –

답변

0

O 죄송합니다. 시간을 낭비합니다.

해결책은 코드와 관련이 없습니다.

표가 더 좁았다. 그래서 텍스트 (셀의 왼쪽에 쓰여졌습니다)는 테이블 경계 바깥에있었습니다. 그리고 그것이 스크린에서 사라진 이유입니다.

+1

이상하게도, 나는 프로그램 적으로 테이블 뷰를 만들고, 델리게이트를 지정하고, UITableViewCell의 커스텀 서브 클래스를 만들고있다. 아무 것도 없다. cell.hidden = YES; 그러나 모든 셀은 기본적으로 숨겨져 있습니다. 이 주제에 놀라운 해결책이 없었습니다. –

+0

내가 해결 한 해결책을 분명히해야합니다. tableview는 UITableViewController 커스텀 서브 클래스의 일부 였고, 인스턴스화를 한 후에 뷰 계층 구조에 포함 된 tableview 속성에도 불구하고 ARC에 의해 인스턴스화되었습니다. 어쨌든, 강한 속성으로 서브 클래 싱 된 UITableViewController 개체를 추가하면 셀이 더 이상 숨겨지지 않습니다. :) –

0

첫째 : 여기

코드입니다

NSArray* topObjects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil]; 
     for (id obj in topObjects){ 
      if ([obj isKindOfClass:[CategoryCell class]]){ 
       cell = (CategoryCell*)obj; 
      } 
     } 

교환이

[[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil]; 

로하고 XIB의 소유자가 클래스에 함께 IBOutlet을 선언합니다. 이 콘센트는 셀을 가리킬 수 있습니다. 그런 다음 셀 XIB 내에서 Files Owner (위의 코드가 속한 클래스 여야 함)을 셀에 연결해야합니다. 그런 다음

self.myCellOutlet; 

에 의해 (예를 들어, 속성을 선언 한 후) 셀을 참조 할 수 있으며, XIB 내의 모든 객체에 열거 할 필요가 없습니다.

당신은 확실이

[cell setSubCategory:cellInfo]; 

작품인가?

당신은 정말 당신이 그런 경우 경우 오류가 가시성 상태에서 차이가 있는지 확인하기 위해 단지 위하여 그것을

[cell setHidden:NO]; 

를 보내려고 않았다, 휴대가 단지 숨겨져 생각한다면?

+0

안녕하세요 pbx, 내가보기에보기가 숨겨져 있지 않습니다. 그것은 단지 표시되지 않습니다. 코드 줄이 확실하게 작동하는지 묻습니다. 제안에 관해서는 고맙게 생각하지만 표준 접근 방식을 선호합니다. – Luda

+0

문제는 없습니다. 그냥 이상하게도 당신의 코드를 더 읽기 좋게 만들 것이라고 생각했다 .-) – pbx

관련 문제