본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
Development/iPhone

[옛 글] SimpleTableView - RootViewController

by 마즈다 2013. 7. 8.
반응형

최초 작성일 : 2010/03/28 08:38



RootViewController.h


//UITableViewController를 상속받은 RootViewController 선언

@interface RootViewController : UITableViewController {

//클래스 변수로 NSArray 타입의 timeZoneNames선언

NSArray *timeZoneNames;

}


//접근자와 변경자 자동 선언 키워드

@property (nonatomicretain) NSArray *timeZoneNames;


@end




RootViewController.m

//선언부 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 allocinitWithStyle: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


[Notice]
UITableView는 2개의 protocol을 구현하고 있는데
UITableViewDelegate는 테이블 뷰의 설정을 처리혹
UITableViewDataSource는 테이블 뷰의 각 행의 데이터를 처리한다.

반응형