iOS 8 Adaptive Cell 및 cell 재사용 문제

1806 단어
tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
이 방법은cell의 예상 높이를 되돌려주는 데 사용됩니다. 만약에 프로그램에서 이 방법을 실현했다면tableview가 처음 불러올 때heightForRowAtIndexPath 방법을 사용하지 않고estimatedHeightForRowAtIndexPath로 예상 높이를 계산하여tableview의 총 높이를 계산한 다음에tablew가 나타날 수 있습니다.cell이 보일 때까지heightForRowAtIndexPath를 호출해서cell의 정확한 높이를 가져옵니다.
        estimatedHeightForRowAtIndexPath

이 Delegate 방법은 테이블 뷰를 처음 불러오는 데 발생하는 성능 문제를 해결합니다.그러나 또 하나의 번거로운 문제는 셀이 불러오지 않았을 때 셀의 높이를 계산하는 것이다. 위에서 제시한 코드 중 NSString의 높이만 계산하면 적지 않은 코드가 필요하다.이런 계산은 사실상 필수적이다. 그러나 iOS 8에서부터 너는 이런 번거로운 계산 코드를 더 이상 쓰지 않아도 될 것이다!전제 조건은storyboard를 사용할 줄 알아야 한다는 것이다.
iOS 8에서 self size cell은 다음과 같은 메커니즘을 제공합니다. cell에 정해진 너비/높이가 있으면 autolayout은 자동으로 cell의 내용에 따라 대응하는 높이/너비를 계산합니다.보기:
***iOS 8 Adaptive Cell ***
.
2.cell 재사용 문제
홈페이지에서 그랬어요.
//if the cell is reusable (has a reuse identifier), this is called just before the cell is returned from the table view method dequeueReusableCellWithIdentifier:. If you override, you MUST call super.
- (void)prepareForReuse{ 
   [super prepareForReuse];
 }

***tableView 스크롤로 인한 데이터 혼란을 해결하고 다시 사용하려고 합니다. 스크롤에 데이터 착란이 발생하지 않도록 하기 위해서 당신은 그 안에 값을 nil로 설정할 수 있습니다. 예를 들어:***
self.timeLineBill = nil; 
self.categoryImageBtn.imageView.image = nil;

cell을 사용할 때 네트워크로 사용할 때, 이전 네트워크 요청을 취소할 것을 통지해야 합니다.이cell에 데이터를 보내지 마세요. 다음 방법은identifier에 따라 간단하게 다시 사용할 수 있고 데이터가 복잡할 때 안 돼요.
static NSString *CellIdentifier = @"Identifier";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
   cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

좋은 웹페이지 즐겨찾기