2014-01-08 2 views
0

IB에서 UIViewController 안에 UITableView을 추가 했으므로 TableView 콘텐트를 "정적 셀"로 설정했습니다. 원하는 콘텐트이므로 아무 것도 추가하지 않으면 모든 것이 잘 보입니다. UITableView. 하지만 예를 들어 첫 번째 UITableViewCell의 배경색을 검은 색으로 변경하면 앱을 실행할 때 검은 색으로 표시되지 않습니다. UITableViewControllerDelegateUITableViewDataSource을 추가하고 tableView.delage = self;을 설정했습니다. 그러나 여전히 appView를 실행하면 tableView에 변경 사항이 표시되지 않습니다.UIViewController에서 UITableView가 콘텐츠를 표시하지 않습니다.

무엇이 문제 일 수 있습니까?

참고 : 또한 tableView.dataSource = self;을 추가하려고했지만 앱이 다운됩니다.

+0

질문이 해결 되었습니까? 제 대답을 확인하십시오 –

답변

0

예, UIViewController에서 정적 테이블 뷰 내용을 가질 수 있습니다.

당신이 할 필요가있다 :

-Create 인터페이스 빌더에있는 테이블의 정적 세포와 그들에게 당신이 좋아하는 방법을 디자인합니다. 를 반환하는 인터페이스 빌더에서 뷰 컨트롤러에 테이블 뷰의 위임과는 dataSource

-Implement -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -connect

@interface MyViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

다음의 UIViewController 테이블 뷰의 데이터 소스 및 대리자를 구현, 지긋 지긋

세포 수. (예 : return 10, 단순함)

- 인터페이스 빌더에서 IBOutlets로 코드에 셀을 연결하십시오. 중요 :strong인지 확인하십시오. 약하게 작동하지 않습니다. 예 : @property (strong, nonatomic) IBOutlet UITableViewCell *myFirstCell;

- 구현 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 색인 경로에서 올바른 셀을 반환합니다. 예 :

int num = indexPath.row; 
UITableViewCell *cell; 
switch (num) { 
    case 0: 
     cell = self.myFirstCell; 
     break; 
    case 1: 
     cell = self.mySecondCell; 
     break; 
} 
return cell; 

이러한 모든 단계를 적용하면 셀이 많지 않은 테이블에서 작동하는 정적 셀이 작동해야합니다. 당신은 몇 가지 (아마도 10-20 개 정도면 충분할 것입니다)의 내용을 담고있는 테이블에 이상적입니다. 나는 며칠 전에 같은 문제를 실행했고 그것이 효과가 있다는 것을 확인했다. 여기에 더 많은 정보 검사 : 당신은 단지 UITableViewController 정적 세포를 사용하기로되어 있기 때문에 Best approach to add Static-TableView-Cells to a UIViewcontroller?

+0

UIViewController에서 정적 컨텐츠를 사용할 수 있습니까? @Gavin은 UITableViewController에서 정적 콘텐츠 만 사용한다고 가정합니다. – Peter

+0

코드 복사 및 테스트를 복사하여 복사하는 것이 좋습니다. 위의 코드가 저에게 효과적 이었으므로 옳았습니다. –

0

당신은 UITableViewController를 사용하는 것이 좋습니다 아닌 UITableViewUIViewController는 여기에 추가. 해킹 할 수있는 방법이있을 수 있습니다. 정적 셀을 사용할 수는 있지만 UITableViewController을 사용하는 것이 훨씬 간단합니다. 특히 테이블의 내용을 변경하는 경우에는 처리 할 문제가 줄어 듭니다.

0

UITableViewCell에 대한 배경 문제로 보입니다. 따라서 내용이 드로잉인지 아닌지를 확인하기 위해 백그라운드를 사용하지 마십시오.

예를 들어 NSLog에 디버거를 사용할 수 있습니다.

참고 : 셀에는 수정할 수있는 콘텐츠보기가 있습니다. 기억이 나지 않지만 셀이 색상으로 조절할 수있는 배경 속성을 갖고 있지 않은 것 같습니다.

예 :- 작동하지 않으며 색상은 기본 색상으로 흰색이됩니다.

[셀 setBackgroundColor : [UIColor blackColor]];

예를 들어 사진에 셀을 추가하면 내가 생각한대로 결과를 볼 수 있습니다.

사용이 코드 : 내가 생각하는이 대표의

[cell.contentView setBackgroundColor:[UIColor blackColor]];

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

그것은 당신을 도울 것입니다.

0

프로토콜을 구현 했습니까? ... 또 다른 문제는 프로토콜을 구현할 때 셀이 표시되지 않을 때 문제가 발생한다는 것입니다. 주어진 메소드에 대해이 구현을 시도하십시오.

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

    NSString *[email protected]"Cell"; 
    CobranzaCell *cell = [[CobranzaCell alloc]init]; 
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier 
              forIndexPath:indexPath]; 
    if (cell == nil) { 
     cell = [[CobranzaCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:CellIdentifier]; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 

    // Configure the cell... 
    return cell;   
} 
0

간단한 UIViewController 하위 클래스에서는 정적 셀을 사용할 수 없습니다. 대신 UITableViewController 인스턴스를 사용해야합니다. 스토리 보드의 해킹이 UIViewController의 인스턴스를 스토리 보드 캔버스로 드래그합니다. 그런 다음 객체 라이브러리에서 컨테이너 뷰를 드래그하여 UIViewController의 뷰에 놓습니다. 기본적으로 관련 UIViewController 인스턴스와 함께 포함 심도가 생성됩니다. 당신이 뭘하고 싶은지 -이 뷰 컨트롤러를 삭제하고 객체 라이브러리에서 UITableViewController의 인스턴스를 드래그 앤 드롭 한 다음 컨테이너 뷰에서 마우스 오른쪽 버튼을 클릭하고 드래그하여 방금 떨어 뜨린 UITableViewController로 드래그합니다. 삽입을 선택했습니다. 이제 테이블 뷰 컨트롤러는 컨테이너 뷰의 크기를 가져오고, 정적 셀을 사용할 수 있습니다! 희망이 도움이 될 것입니다!

관련 문제