2013-10-24 16 views
5

私は多数のセルからなるUICollectionViewを持っています。これらのセルの1つをタップして、これが適切なアクションであると判断したら、別のビューコントローラにストーリーボードをセグメンテーションさせたいと思います。prepareForSegueは決して呼び出されません

私はストーリーボードにセグエントとともにセカンダリビューコントローラを作成しました。セットアップに私を許可するように(ID)送信者:(UIStoryboardSegue *)セグエ送信者:(空)prepareForSegue - 私のUICollectionViewのサブクラスでは、私は、私も実装した。このクラスには、次の...

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
    return NO; // So that I can determine whether or not to perform the segue based on app logic 
} 

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 
    [collectionView deselectItemAtIndexPath:indexPath animated:YES]; 

    // Selection logic here 
    [self performSegueWithIdentifier:@"showDetailView" sender:self]; 
} 

を実装しましたセグーが行われる前の私の詳細ビュー。それは次のようになります。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSLog(@"HELLO, WORLD!!!"); 
} 

すべてが順序であると思われるが、私はprepareForSegueが呼び出されないことを発見しています。私はロギング、ブレークポイントを設定しようとしました。このメソッドが今までに呼び出されたという兆候はありません。私はここで何が欠けていますか?このメソッドが呼び出されないのはなぜですか?シンプルな "Hello、World"ステートメントがありましたが、以前は詳細ビューが依存していたコードがありました。詳細ビューが正しく設定されていなかったため例外が発生します。

ここに他に何かがありますか?私は、私が現在ではないことをすべきである何か?

答えて

3

PrepareForSegueは、shouldPerformSegueWithIdentifier:NOを設定すると決して呼び出されません。

+0

正解に感謝します。 – Tommy

6

あなたはこれでセグエないようにiOS版を言っている:

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
    return NO; // So that I can determine whether or not to perform the segue based on app logic 
} 

YESに変更NOをし、それが動作するはずです。または、segueが必要なときに、少なくともYESを返すロジックを追加します。

+0

私のdidSelectItemAtIndexPathメソッドを見ると、私はsegueを手動で実行しています。 – Shadowman

+1

@ShadowmanそれをYESに設定して、それが動作するかどうかを確認しましたか? –

2

ストーリーボードの 識別子を設定して、デリゲートでも使用するプロトタイプセル(ダイナミックセル付き)を使用していることを確認してください。私はこの問題 を持っていたし、それを理解するために少し私を取った。

static NSString *cellIdent = @"prototypeCellName"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdent]; 
関連する問題