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);
    }
}


프로젝트 진행 중에 처음에는 없던 자동로그인 기능 구현이 결정되었다.

최대한 간단하게 구현하려고 노력했으며 실제로 그렇게 되었다고 본다.


바로 NSUserDefaults 를 이용한 방법인데 LoginState, Autologin 이라는 NSUserDefault를 선언하고

LoginState는 YES/NO 값을 가지고 ID와 PW를 스트링으로 저장하여 다음 앱 실행 시 활용하였다.


앱 메인에 로그인 유지를 선택 할 수 있는 체크박스를 만들어 놓은 후

if (autoLoginChecked) { // 자동로그인 체크 NSUserDefaults *autologin = [NSUserDefaults standardUserDefaults]; [autologin setObject:@"yes" forKey:@"loginstate"]; // 자동로그인 State를 yes로 저장 [autologin setObject:userID.text forKey:@"userid"]; // User ID 필드 값 저장 [autologin setObject:userPass.text forKey:@"pass"]; // User PW 필드 값 저장 [autologin synchronize]; }

이렇게 설정을 해 놓은 후 다음 앱 실행 시 loginstate 의 키 값이 yes냐 no냐에 따라서 분기를 주면 된다.

사용자 로그아웃 시에는 loginstate를 no로 바꾸고 synchronize를 해주면 간단하다.


'프로그래밍 > iOS - OBJC' 카테고리의 다른 글

iOS NSTimer 호출하기  (1) 2016.05.12
맥 OS X PhoneGap 설치  (0) 2016.04.27
iOS에서 위치정보 사용 동의 받기  (0) 2016.03.10
iOS 8에서 푸시 알림 동의 받기  (0) 2016.03.10
Singleton 패턴 사용하기  (0) 2016.03.09

+ Recent posts