3つの異なるビューに対して3つのセグエがあります。 2は問題なく実装されていますが、3番目が作成されたときに問題が発生します。
次のdidSelectRowAtIndexPathメソッドがあります。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@" ---------- did select row");
if(indexPath.section == 0){
if(indexPath.row == [self.data count]-1){
//prior to adding this, everything works
[self performSegueWithIdentifier:@"MoreComments" sender:self];
}else{
[self performSegueWithIdentifier:@"FriendView" sender:friend];
}
}else if(indexPath.section == 1){
if(indexPath.row == [self.data2 count]-1){
[self performSegueWithIdentifier:@"MorePosts" sender:self];
}else{
[self performSegueWithIdentifier:@"FriendView" sender:friend];
}
}
}
次のprepareForSequeメソッドがあります。
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"MorePosts"]){
MorePostsViewController *mfamvc = segue.destinationViewController;
mfamvc.data = self.data;
}else if([segue.identifier isEqualToString:@"FriendView"]){
FriendViewController *fvc = segue.destinationViewController;
fvc.friend = friend;
}else if([segue.identifier isEqualToString:@"MoreComments"]){
MoreCommentsViewController *mcvc = segue.destinationViewController;
mcvc.data = self.data2;
}
}
コントロールをセルから最後のビューにドラッグする前に、プログラムがdidselectrowにヒットし、次にprepareforsequeにヒットするのを確認できます。これにより、すべてのビューナビゲーションが完全に機能します。
セルからMoreCommentsViewControllerへのドラッグを制御するとすぐに、エラーが発生し始めます。
入れ子になったプッシュアニメーションにより、ナビゲーションバーが破損する可能性があります。予期しない状態でナビゲーション遷移を終了します。ナビゲーションバーのサブビューツリーが破損する場合があります。
今、prepareforsequeも2回呼び出されていることに気づきました。prepareforsequeが最初に呼び出され、次にdidselectrow、次にprepareforsegueが呼び出されています。
これらの異なるビューに条件付きで移動するために私は何を間違っていますか?
その理由は、テーブルビューセルから複数のビューにドラッグできないためです。 @rdelmarが述べたように、これは誤りです。宛先ビューからソースビューにドラッグしてから、上記の方法で手動で処理する必要があります。
ここにもあります: ITableViewCellをタップすると条件付きセグエが実行されます