2014. 1. 9. 18:03
Segue의 identifier는 보내야 하는 target  의 id이다.
처음에는 Sample 코드만을 가지고 파악을 함으로써,
prepareForSegue가 호출되기 이전에 Segue의 Identifier의 String 값을 셋팅하고,
prepareForSegue가 호출시에 셋팅된 Segue의 Identifier의 String 값을 체크해서
맞는 경우에만 다음 뷰로 넘기는 방식으로 생각했으나,
이것은 잘못 이해한 것이었다.
여기서의 Identifier의 String은 보낼 target의 id이다.

아래의 코드를 사용하면, buttonPressed 함수 내부의
 [self performSegueWithIdentifier:@"MySegueMain" sender:sender];
코드에서 App이 죽는 현상이 발생. 이 문제를 해결하려 하다보니,
target에 id를 부여하고 그 id를 prepareForSegue에서 사용하는 방법으로 해결되었다.

간단한 App의 경우에는 그냥 
if ([[segue identifierisEqualToString:@"MySegueMain"])
이 구문을 빼는 것으로 마무리하자!


값 전달 소스
===========

1.호출 쪽에서 

#import "ViewController.h"

#import "CheckViewController.h"


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{

    if ([[segue identifierisEqualToString:@"MySegueMain"])

    {

        CheckViewController *vc = [segue destinationViewController];

        [vc setUserID:txtID.text]; //SecondView member .

    }

}


- (IBAction)buttonPressed:(id)sender
{
    [self performSegueWithIdentifier:@"MySegueMain" sender:sender];
}


2. 불리는 쪽에서


#import <UIKit/UIKit.h>


@interface CheckViewController : UIViewController {

    NSString *userID;

}


@property (strongnonatomicNSString *userID;


@end





#import "CheckViewController.h"



@implementation CheckViewController


@synthesize userID;



- (void)viewDidLoad

{

    [super viewDidLoad];

//다음 뷰에서 받은 데이터를 이용하여 실행할 코드의 사용

}



Posted by 은돌군