2014-03-24 2 views
0

내 배열 항목을 보여주는 테이블 뷰가 있습니다. . 내 스토리 보드와 함께 detailviewcontroller 화면에 push style segue를 연결했지만, 모든 항목을 detailviewcontroller로 보내고 싶지는 않습니다. 그래서 컨트롤러를 만들었습니다.1 액션에 2 개의 segue를 어떻게 추가 할 수 있습니까?

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

if (sender == self.btnEkle) return; 
if (sender == self.btnKrediKartlarim) return; 

NSString *bankaAdi = [[mainList objectAtIndex:indexPath.row] objectForKey:@"BankaAdi"]; 

if (bankaAdi.length > 1) { 

    KartDetay *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"KartDetay"]; 

    [self presentViewController:vc animated:YES completion:nil]; 

} 

내 애플

이 코드는 작업중인 detailviewcontroller로 이동해야하지만 오류가 자사의 내가 다른 말은하지 않을 경우 bankaAdi.length> (1) 내 응용 프로그램은 KartDetay

로 이동해야하는 경우 내 컴파일러에서.

에 대한 시작/종료 모양 전환의 불균형 호출.

내 영어로 죄송합니다. 나는 분명히 자신을 설명하지는 않았지만 나를 도우려고 노력하십시오.

감사합니다.

--- 업데이트] AREA ---- 모든

먼저 주셔서 감사합니다 answer.But이 작업을 나던 또는 내가 그렇게 couldnt한다.

1 - 난 .. 내 KartDetay ("taksit"SEGUE 이름) 내 DetayEkran ("detay"SEGUE 명)로 2 마누엘 다른 segues을 만들어

2-I는 ..이 코드와 함께 사용

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

    if ([segue.identifier isEqualToString:@"taksit"]) 
    { 
    //if (sender == self.btnEkle) return; 
    //if (sender == self.btnKrediKartlarim) return; 

    KartDetay *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"KartDetay"]; 
    [self presentViewController:vc animated:YES completion:nil]; 

    } 
else 
    { 

     DetayEkran *detayEkran = [self.storyboard instantiateViewControllerWithIdentifier:@"DetayEkran"]; 
     [self presentViewController:detayEkran animated:YES completion:nil]; 
    } 

내 응용 프로그램을 실행하고 bankaAdi> (1) 내 첫 번째 셀을 누릅니다

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

NSIndexPath *indexPath2 = [self.tableView indexPathForSelectedRow]; 
bankaAdi = [[mainList objectAtIndex:indexPath2.row] objectForKey:@"BankaAdi"]; 

if (bankaAdi.length > 1) 
{ 
    [self performSegueWithIdentifier:@"taksit" sender:nil]; 
} 

else 
    { 
    [self performSegueWithIdentifier:@"detay" sender:nil]; 
    } 

}.

이 앱은 KartDetay 화면으로 이동 할 수 있지만 내 컴파일러는 말한다 :

불균형 통화를위한/끝 모양의 전환을 시작합니다.

다시 답변 해 주셔서 감사합니다.

---- ReUpdated 지역 --- 문제는 내가 다른 DetayEkran *detayEkran = [self.storyboard instantiateViewControllerWithIdentifier:@"DetayEkran"]; [self presentViewController:detayEkran animated:YES completion:nil];

전화 사촌

나는 이러한 코드와 큰 실수를 ... ... 그렉 해결하는 그렉 주셔서 감사한다 내 prepareforsegue 방법. 난 ... 모두가 내 응용 프로그램이 제대로 작동 내 prepareforsegue 방법에 코드를 인스턴스화

을 삭제하면 그래서

그렉 코드는 마치 마법처럼 노력하고 있습니다 .. 당신에게 그렉 감사합니다!

답변

0

segue가 호출 될 때 prepareForSegue : segue 메서드가 호출되어 전환을 처리 할 때 presentViewController를 호출하거나 뷰 컨트롤러를 수동으로 밀어서는 안됩니다.

가장 좋은 방법은 KartDetay에 대해 두 개의 segue를 만들고 storyboard에 두 개의 다른 식별자가있는 detailviewcontroller를 만드는 것입니다.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([segue.identifier isEqualToString:@"YOUR1IDENTIFIER"]) { 

     KartDetay *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"KartDetay"]; 

     [self presentViewController:vc animated:YES completion:nil]; 
    } 
    else { 
     //handle other view controller 
    } 
} 

그냥 SEGUE 식별자를 대체하기 위해 기억

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString *bankaAdi = [[mainList objectAtIndex:indexPath.row] objectForKey:@"BankaAdi"]; 

    if (bankaAdi.length > 1) { 
     [self performSegueWithIdentifier:@"YOUR1IDENTIFIER" sender:nil] 
    } 
    else 
     [self performSegueWithIdentifier:@"YOUR2IDENTIFIER" sender:nil] 

} 

어떤 매개 변수를 전달해야하는 경우가 prepareForSegue 방법을 사용

그리고 당신은 적절한 SEGUE을 당신의 상태를 확인하고 실행 didSelectRowAtIndexPath 메소드를 오버라이드 (override) 너와 함께.

+0

그것이 작동하지 않는다는 것이 무엇을 의미합니까? 당신이 한 일과 일어난 일을 설명하십시오. – Greg

+0

알겠습니다. 질문을 초 단위로 업데이트 해 드리겠습니다. 그리고 정말 고마워요! – leonthegosu

+0

코드가 올바르게 작동합니다. 나는 내 실수였다. segue 메소드를 준비 할 때 다른 viewcontroller 인스턴스를 추가하는 실수를했다. 미안합니다. 그리고 다시 귀하의 답변을 주셔서 감사합니다. – leonthegosu

0

prepareForSegue:sender: 메서드는 상세 뷰 컨트롤러를 열기 전에 호출됩니다. 화면 전환 컨트롤러를 표시하거나 푸시하지 않고 전환을 준비하는 곳입니다. 메서드가 호출 된 후 실제 전환이 수행됩니다. 푸시 또는 프리젠 테이션 사용 여부는 스토리 보드의 segue 유형에 따라 다릅니다.

prepareForSegue:sender: 메서드 대신 tableView:didSelectRowAtIndexPath: 메서드를 사용해보십시오.이렇게하면 문제가 해결됩니다.

관련 문제