TableView 를 사용하다 보면, 어떤 셀을 선택했느냐에 따라서 다음 화면에서의 동작이나 표시되는 컨텐츠가 다를 수 있다.
먼저, Destination ViewController의 헤더파일에서 데이터를 받을 프로퍼티를 선언
@property (strong, nonatomic) NSString *receiveID;
스토리보드에서 Segue 연결을 셀에다 다음화면을 직접 연결하는게 아니라 뷰 컨트롤러에서 다음 뷰 컨트롤러를 연결한 후 Segue ID를 설정 해 준다
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
transData = [self.datalist objectAtIndex:indexPath.row]; // Cell의 index에 따라서 datalist 배열의 해당하는 index의 데이터를 transData 변수에 저장
[self performSegueWithIdentifier:@"DataTestSegue" sender:self]; // DataTestSegue : 스토리보드에서 연결 후 설정 한 Segue ID
}
이 후에 화면전환 시 호출되는 prepareForSegue 메소드에서 데이터 넘기기
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"DataTestSegue"]) { // Segue ID에 따라서 구분. 한 화면에서 여러 뷰 컨트롤러로 나뉠 때 분기별로 나눠주면 됨
SafeZoneDetailViewController *destination = [segue destinationViewController];
destination.receiveID = transData;
NSLog(@"ID: %@",transData);
}
else if ([[segue identifier] isEqualToString:@"newDataSegue"]) {
NewSafezoneViewController *destination = [segue destinationViewController];
destination.childID = receiveID;
NSLog(@"child ID: %@",receiveID);
}
}
'프로그래밍 > iOS - OBJC' 카테고리의 다른 글
SMS 컴포넌트 호출하기 (2) | 2016.10.31 |
---|---|
Xcode 8.x 버전에서 테이블 뷰 헤더 없어지는 문제 (0) | 2016.10.31 |
iOS NSTimer 호출하기 (1) | 2016.05.12 |
맥 OS X PhoneGap 설치 (0) | 2016.04.27 |
iOS에서 위치정보 사용 동의 받기 (0) | 2016.03.10 |