iOS 개발 의 UITableView 상세 설명

5234 단어 iOS 개발UITableView
1.UITableView 기본 소개
기본 UITableView 는 두 가지 스타일 이 있 습 니 다.
UITableView StylePlain(그룹 으로 나 누 지 않 음)UITableView StyleGrouped(그룹)UITableView 의 데 이 터 는 줄 의 개념 만 있 고 열 개념 이 없습니다.UITableView 의 모든 줄 데 이 터 는 하나의 UITableView Cell 입 니 다.
UITableView Cell 의 종류 선택 은 다음 과 같 습 니 다.

typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
    UITableViewCellStyleDefault,    // textLabel( detailTextLabel),imageView ( )
    UITableViewCellStyleValue1,     // textLabel、 detailTextLabel( ),imageView ( )
    UITableViewCellStyleValue2,     // textLabel( ) detailTextLabel,imageView ( )
    UITableViewCellStyleSubtitle    // textLabel, detailTextLabel( ),imageView ( )
};
2.UITableView DataSource 데이터 원본
데이터 원본 의 역할 은 UITableView 에 내 가 어떤 데 이 터 를 표시 해 야 하 는 지 알려 주 는 것 이다.

#pragma mark
#pragma mark
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
#pragma mark
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
#pragma mark
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
#pragma mark
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
#pragma mark
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
그룹 수 계산->그룹 별 줄 수 계산->그룹 색인 생 성->셀 생 성
메모:cellForRow AtIndexPath 는 현재 인터페이스 에 표 시 된 셀 만 생산 합 니 다.
3.UITableView Delegate 대리
에이전트 의 역할 은 UITableView 에 어떻게 표시 하고 응답 해 야 하 는 지 알려 주 는 것 입 니 다.

#pragma mark -
#pragma mark
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
#pragma mark ( )
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
#pragma mark
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
#pragma mark
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
#pragma mark
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
#pragma mark
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;
4.UITableView 목록 새로 고침 방법

#pragma mark
- (void)reloadData;
#pragma mark
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
#pragma mark
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
#pragma mark
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
#pragma mark
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
5.UITableViewCell 의 재 활용 메커니즘
UITableView 내부 에 UITableView Cell 을 캐 시 하 는 캐 시 풀 이 있 습 니 다.UITableView 는 모든 Cell 을 한꺼번에 표시 하 는 것 이 아니 라 보 이 는 대로 얻 는 방식 으로 핸드폰 에 보 이 는 Cell 이 있어 야 존재 하 는 대상 UITableView Cell 인 스 턴 스 가 있 습 니 다.구체 적 인 표현 은 다음 과 같다.
새 Cell 을 표시 할 때마다 캐 시 풀 에서 해당 하 는 UITableView Cell 대상 을 먼저 꺼 내 다시 초기 화 합 니 다.캐 시 풀 에 없 으 면 새 UITableView Cell 대상 을 만 듭 니 다.
어떤 Cell 이 보 이 는 영역 밖으로 옮 겨 질 때마다 캐 시 풀 로 회수 된다.
그래서 보 여 주 려 는 데이터 가 크 지만 메모리 에 존재 하 는 UITable View Cell 도 한계 가 있어 메모리 에 대한 수 요 를 크게 낮 추 었 습 니 다.

# pragma mark tableView:cellForRowAtIndexPath: UITableView
// ,cell
static NSString *cellIdentifier = @"UITableViewCellIdentifierKey1";
//
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
// ,
if(!cell){
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier];
}
6.시스템 자체 UITableView Cell

우 리 는 시스템 이 자체 적 으로 가지 고 있 는 UITable View Cell 을 거의 사용 하지 않 는데,양식 이 너무 딱딱 하 다.
7.사용자 정의 셀
기본 단계:
사용자 정의 클래스 XXXTableViewCell,UITableViewCell 계승
다시 쓰기-(id)initWithStyle:reuseIdentifier:방법,하위 컨트롤 추가
layoutSubView 방법 을 다시 쓰 고 하위 컨트롤 frame 을 설정 하 는 것 이 좋 습 니 다.
그 다음 에 UITableView 의 프 록 시 방법 tableView:cellForRow AtIndexPath:에서 재 활용 체 제 를 사용 하여 이 종류의 XXXTleView Cell 을 만 들 고 cell 을 초기 화 합 니 다.

8.MVC 모드

좋은 웹페이지 즐겨찾기