IT/IPhone개발

UITableView custom cell 가지고 놀기

차가운남자 2016. 4. 20. 02:10

Xib로 생성하지 않고 스토리보드에서 테이블뷰를 적용해보고 싶어서 구글링을 통해서 연습을 해봤다.. 안드로이드와 다른 방식이라서 조금 골치가 아팠는데 오늘 정리를 하게됐다.


우선 스토리보드에서 UIViewController안에 UITableview를 넣고 UITableviewcell 를 넣고  맨 밑에 Textfield와 Button을 넣었다.

UITableviewcell 안에 라벨 2개를 넣었다.

ViewController.h 에는  UITableViewDataSource,UITableViewDelegate를 상속시켜주었다.

왜냐하면 UITableView는 ViewController에 속해있기 때문에 action을 연결시켜줄수 있기 때문이다.

'입력'버튼에 이벤트를 먹히기 위해서 addText라고 만들었다.


우리가 가지고 놀 Tableviewcell을 파일을 생성하기 위해서 ->>>>> Cocoa Touch Class로 하여서 CustomCell을 하나 생성하고 

Xib는 생성하지 않는다.



밑에 스샷고 같이 위에 2개의 라벨을 control 키로 드래그하여 만든다.



그다음에는 스토리보드에 있는 옵션을 이용해서 Custom Class의 명을 바꾸어준다.


그다음에 나중에 ViewController.m에 이 셀의 이름을 정하기 위해서 Cell이라고 명시해줬다.


이제 ViewController.m에 가서 UITableViewDataSource,UITableViewDelegate 상속받았기 때문에 밑에 

2개의 함수를 오버라이드 해주어야한다.

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPat

2개의 함수를 안적어주면 에러가 발생한다.   


추가적인 내용:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString *CellIdentifier =@"Cell";   <<--- 위에 CustomCell의 이름을 Cell 이라고 명시하여서 이렇게 넣었다.

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.customFirst.text = [leftArray objectAtIndex:indexPath.row];

    cell.customSecond.text = [rightArray objectAtIndex:indexPath.row];

    return cell;

}

- (IBAction)addText:(UIButton *)sender {

    [leftArray addObject:self.txtInput.text];

    [rightArray addObject:self.txtInput.text];

    [self.pListView reloadData];


    double delayInSeconds = 0;

    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));

    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

        [self.pListView scrollToRowAtIndexPath:[NSIndexPath indexPathForItem:leftArray.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];

    });      <<--- 빨간 부분은 테이블뷰에서 텍스트필드의 값을 넣을때 생성될때 들어가는 모습을 보여주기 위한 부분이다. (dispatch 관련된거는 thread내용이다)

}



오늘 배운점:

 NSArray와 NSMutualArray 차이점이다.  안드로이드에서는 배열로 하면 add,replace 등 다양한 작업을 할수 있었다.

 IOS는 NSArray에서는 그것이 안되었다(add,delete등).하지만 NSMutualArray라는 클래스가 그것을 해준다는것을 알았다.


'IT > IPhone개발' 카테고리의 다른 글

[Swift] Segue로 값넘기기  (0) 2016.05.03
[Swift] UIAlertView 바뀐 사용법  (0) 2016.05.02
[Swift] xcode 7.3 Swift 2.2 변경된 것들  (0) 2016.04.27
[swift] 공부하기 괜찮은 사이트  (0) 2016.04.26
[Swift] TableView 파해치기  (0) 2016.04.22