최초 작성일 : 2010/03/28 08:38
//UITableViewController를 상속받은 RootViewController 선언
@interface RootViewController : UITableViewController {
//클래스 변수로 NSArray 타입의 timeZoneNames선언
NSArray *timeZoneNames;
}
//접근자와 변경자 자동 선언 키워드
@property (nonatomic, retain) NSArray *timeZoneNames;
@end
//선언부 import
#import "RootViewController.h"
#import "SimpleTableViewAppDelegate.h"
@implementation RootViewController
//접근자와 변경자 자동 구현 키워드
@synthesize timeZoneNames;
//UIViewController에 있는 함수. 메모리에 컨트롤러의 뷰가 로드된 후 호출됨
- (void)viewDidLoad {
//title은 UIViewController에 있는 속성
//NSLocalizedString : Foundation Function. NSBundle에 있는
//localizedStringForKey:value:table: 함수를 실행시켜
//지역화된 문자열을 반환. Time Zones라는 테이블로부터
//Time Zones title이라는 값을 가져온다.
self.title = NSLocalizedString(@"Time Zones", @"Time Zones title");
}
//UITableView에 구현된 UITableViewDataSource protocol에 있는 함수.
//테이블 뷰에 섹션이 몇개 있는지 갯수를 반환
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// There is only one section.
return 1;
}
//UITableView에 구현된 UITableViewDataSource protocol에 있는 함수.
//인자로 넘어간 테이블 뷰 내의 섹션에 몇개의 row가 있는지를 반환
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of time zone names.
//timeZoneNames배열의 내용이 그대로 테이블 뷰를 구성하므로 그 크기를 반환함
return [timeZoneNames count];
}
//UITableView에 구현된 UITableViewDataSource protocol에 있는 함수.
//인자로 넘어간 테이블 뷰의 특정 위치(인자로 넘어간 indexPath)에 cell을 삽입하는 함수.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
// Try to retrieve from the table view a now-unused cell with the given identifier.
//인자로 넘어간 문자열을 이름으로 갖는 재사용 가능한 테이블 뷰 셀을 반환.
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
// If no cell is available, create a new one using the given identifier.
//만일 재사용 가능한 셀이 없으면 새로운 셀을 생성
if (cell == nil) {
// Use the default cell style.
//alloc으로 생성하였으므로 반드시 release해주어야 함. 그러나 cell은 다른 위치에서 참조되고 사용되므로
//autorelease를 설정하여 처리함
//UITableViewCellStyleDefault라는 셀 스타일과 MyIdentifier라는 식별자로 셀을 초기화 함
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:MyIdentifier] autorelease];
}
// Set up the cell.
//timeZoneNames 배열의 인자로 받은 위치에 있는 문자열을 추출하고
NSString *timeZoneName = [timeZoneNames objectAtIndex:indexPath.row];
//추출한 문자열을 셀의 text 속성에 넣는다.
cell.textLabel.text = timeZoneName;
return cell;
}
/*
To conform to Human Interface Guildelines, since selecting a row would have no effect (such as navigation), make sure that rows cannot be selected.
*/
//인자로 받은 tableView의 indexPath위치에 있는 cell이 선택되었음을 delegate에게 전달한다.
//이 예제에서는 cell 선택에 대한 내용을 처리하지 않으므로 그냥 nil을 리턴한다.
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
return nil;
}
//메모리 해제
- (void)dealloc {
[timeZoneNames release];
[super dealloc];
}
@end
UITableView는 2개의 protocol을 구현하고 있는데
'Development > iPhone' 카테고리의 다른 글
[옛 글] SimpleTableView - Interface Builder (0) | 2013.07.12 |
---|---|
[옛 글] [번역] 애플 개발자 홈페이지의 아이폰 OS 4 안내 (0) | 2013.07.12 |
[옛 글] [APIs] UINavigationController (0) | 2013.07.08 |
[옛 글] SimpleTableView - SimpleTableViewAppDelegate (0) | 2013.07.08 |
[옛 글] SimpleTableView - main.m (0) | 2013.07.05 |