iOS 개발 의 UITableView 상세 설명
5234 단어 iOS 개발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 모드
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
iOS 아리운 대상 저장 OSS 파일 업로드/다운로드 실현이전 프로젝트에서 이미지 음성 등 자원 파일은 서버에 직접 데이터를 업로드하고 서버에 처리하고 저장했다.최근의 이 프로젝트는 서버가 직접 OSS를 열고 클라이언트가 아리운이 제공하는 업로드 다운로드 기능을 사용하여 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.