2012-06-10 3 views
0

스토리 보드 핵심 데이터 프로그램에서 두 개의보기 컨트롤러간에 문자열을 전달하려고합니다. 설정 방법은 다음보기를 한 섹션에만 밀어 넣기를 원합니다. 그러므로 "prepareForSegue"보다는 "didSelectRowAtIndexPath"를 사용하십시오. 아래는 "didSelectRow ..."에 대한 코드입니다. "five"는 push되는 viewController 클래스입니다.didSelectRowAtIndexPath가 문자열을 전달할 수 없습니다.

- (void)tableView:(UITableView *)tableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    if (indexPath.section == 0) 
    { 
     five *five=[[five alloc]init]; 
     five.delegate = self; 
     [self performSegueWithIdentifier:@"segue1" sender:self]; 
    } 
} 

"two"는 부모보기입니다. 다음은 "5"클래스에서 생성 된 프로토콜에서 사용되는 방법입니다. "friendString"은 "two"클래스에 있고 "fiveString"은 "five"에 있습니다. 뷰가 팝되면 문자열이 같아야하고 "two"의 UITextField에서 "five"로 추가 된 문자열을 사용합니다. 그러나 뷰가 팝되면 업데이트되지 않습니다.

- (void)popFive:(five *)controller 
{ 
    self.friendString=controller.fiveString; 
    [self update]; 
    [self.tableView reloadData]; 
} 

나는 문제가 seque가에서 수행하는 방법에 관한 것으로 판단 "didSelectRow ..."어떤 도움이나 아이디어를 이해할 수있을 것이다. 감사.

+0

"didSelectRow ..."를 사용하면 segue를 사용할 때 "prepareForSegue"메소드도 추가해야한다고 생각한다. 아래 코드를 추가하면 제대로 작동하는 것으로 보입니다. – user1083689

답변

0

"didSelectRow ..."를 사용할 때는 "prepareForSegue"를 사용해야한다고 생각합니다. 이것을 추가하면 자식 뷰가 팝업 될 때 두 뷰 사이에 문자열을 전달할 수있는 것처럼 보였습니다. 나는 아래 코드를 포함했다

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

if (indexPath.section == 0) 
{ 
    [self performSegueWithIdentifier:@"segue1" sender:self]; 
} 

} 

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

if ([segue.identifier isEqualToString:@"segue1"]) 
{ 
    five *five = segue.destinationViewController; 
    five.delegate = self; 

} 
}