Tôi có một điều hướng xem 3 bộ điều khiển trong đó A trình bày bộ điều khiển phương thức B, trình bày bộ điều khiển phương thức C tất cả thông qua phân đoạn. C có một thư giãn segue trở lại B. Nó cũng có một thư giãn trở lại A. Khi tôi thực hiện hành động cho C để thư giãn để B, nó bung ra nhưng sau đó bật B và quay trở lại A. Đây không phải là những gì tôi muốn, tôi muốn nó trong trường hợp này để ở lại B. Dưới đây là những segues VC C sử dụng.Unwind Segue iOS quay lại 1 quá nhiều VC
unwindCancel là khi người dùng nhấp vào một collectionViewCell và đi lại cho VC B. prepareForUnwind chỉ là một tiêu chuẩn "hủy bỏ" nút để VC A.
Dưới đây là mã cho didSelectItem gọi các thư giãn trong VC C. Dưới đây là prepareForSegue trong VC C.
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[self performSegueWithIdentifier:@"unwindCancel" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"unwindCancel"]) {
GalleryDetailViewController *detailVC = segue.destinationViewController;
detailVC.colletionCount = self.indexPathToPass;
}
}
VC B thư giãn trong file .m
-(IBAction)unwindCancel:(UIStoryboardSegue *)segue{
[self.collectionView scrollToItemAtIndexPath:self.colletionCount atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];
}
VC Một thư giãn trong file .m
-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
}
Có 2 khoảng cách thư giãn từ C - một quay trở lại B và quay lại A. – noobsmcgoobs
@noobsmcgoobs Tôi đã tạo lại bản trình diễn của bạn, sự cố không tồn tại. Do đó, tôi đoán bạn đặt tên cho segue sai.Đặt "nslog "trong hai phương pháp thư giãn của bạn, và xem cái nào được gọi. – wj2061
@noobsmcgoobs Bài đăng này tương tự như: http: //stackoverflow.com/q/33181577/4975761 – wj2061