2016-09-14 1 views
0

ViewController과 섹션 2 개의 다른 사용자 정의 셀을 반환하려고합니다. 문제가있는 방법은 numberOfRowsInTableView입니다. 두 셀의 항목 수를 어떻게 반환합니까? 나는 numberOfRowsInSection에 다음 코드를 시도 :두 개의 다른 사용자 정의 셀을 동일한 View Controller에서 아무런 섹션도없이 반환하십시오.

var indexPath = NSIndexPath() 
if indexPath.row == 2 || indexPath.row == 4 { 
    return abc.count 
} else { 
    return xyz.count 
} 

그러나 응용 프로그램 충돌 오류와 함께 :

응용 프로그램을 종료

*** 인해 캐치되지 않는 예외 'NSInternalInconsistencyException'에 이유 '와 함께 사용하기위한 잘못된 인덱스 경로 UITableView. 테이블 뷰에 전달 된 인덱스 경로에는 섹션과 행을 지정하는 정확히 두 개의 인덱스가 있어야합니다. 가능한 경우 UITableView.h의 NSIndexPath에 범주를 사용하십시오. '

+0

그래서'abc'와'xyz'는 그에 따라 다른 셀을 보여줄 것입니까? –

+0

'numberOfRowsInSection'의'indexPath'는 정확히 무엇입니까? 기본적으로 빈'NSIndexPath'를 초기화하고'row'를 검사하고 있습니까? 그것은별로 의미가 없습니다. 'cellForRowAtIndexPath' 코드도 제공하십시오. – spassas

답변

1

섹션이 하나만있는 경우 numberOfRowsInSection은 UITableView에있을 총 셀 수만 반환해야합니다. 이 문제가 해결되면 동적 인 경우 (즉, 배열에 따라) 숫자를 반환 한 다음 동적 크기 (배열의 크기)를 반환합니다.

0

두 개의 다른 배열에서 오는 두 종류의 셀로 구성된 섹션이 하나만있는 경우 섹션의 셀 수는 두 배열 길이의 합입니다. 세포의 순서가 어떻든간에 (A, B, A, B, A, B ... 또는 A A A A B B B B).

1

이 상황에서는 두 개의 사용자 지정 셀 개수를 반환 할 수 없습니다. 그래서 우리는 요소가 큰 셀과 셀의 요소를 모두 계산해야합니다.

모두 사용자 정의 셀에 값을 표시하기 위해, 다음이

var abc = [String]() //You can have any datatype of array 
    var xyz = [String]() 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
     { 
      return (abc.count > xyz.count) ? abc.count : xyz.count 
     } 

을 시도, 당신은 cellForRowAtIndexPath 기능에서이 방법처럼 구현해야합니다.

func tableView(tableViewData: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    { 

     let cell = tableViewData.dequeueReusableCellWithIdentifier("cell")! as! CustomCellClass 
     if indexPath.row < abc 
     { 
      cell.label1.text = abc[indexPath.row] 
     } 
     else 
     { 
      cell.label1.text = "" 
     } 
     if indexPath.row < self.xyz.count 
     { 
      cell.label2.text = xyz[indexPath.row] 
     } 
     else 
     { 
      cell.label2.text = "" 
     } 
     return cell 
    } 

희망이 있습니다.