Tôi có chế độ xem bảng với các loại ô xem bảng khác nhau trong đó. Trong một trong các ô, có hai nút, tải một bộ điều khiển xem khi được nhấn. Tôi đang sử dụng chức năng sau để xử lý nút nhấn:iOS segue được thực thi hai lần
- (IBAction)leftButtonPressed:(id)sender
{
// Getting the pressed button
UIButton *button = (UIButton*)sender;
// Getting the indexpath
NSIndexPath *indPath = [NSIndexPath indexPathForRow:button.tag inSection:0];
// Loading the proper data from my datasource
NSArray *clickedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indPath.row];
[[SOEventManager sharedEventManager] setSelectedEvent:clickedEvent[0]];
// Everything working as it should up to this point
// Performing seque...
[self performSegueWithIdentifier:@"buttonSegue" sender:self];
}
Nút của tôiĐược cho là sẽ đẩy bộ điều khiển chế độ xem mới. Bằng cách nào đó thay vì đẩy một lần, nó dường như được đẩy hai lần, vì vậy tôi nhận được cảnh báo sau đây:
2013-11-27 01:48:30.894 Self-Ordering App[2081:70b] nested push animation can result in corrupted navigation bar
2013-11-27 01:48:31.570 Self-Ordering App[2081:70b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Trong trường hợp của tôi nó dẫn đến một vụ tai nạn, kể từ khi có một sự kiện mà tôi muốn ứng dụng ngay lập tức bật bộ điều khiển xem để nó trở lại chế độ xem bảng của tôi. Tôi sử dụng một alertview cho điều này và xử lý sự kiện này như sau:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
// ...
// Additional checking of button titles....
else if ([buttonTitle isEqualToString:NSLocalizedString(@"Vissza", nil)])
{
[self.navigationController popViewControllerAnimated:YES];
}
}
Nó có thể cho tôi thú vị để lưu ý rằng tôi có một segue khác từ "bình thường" tế bào xem bảng của tôi, và trong trường hợp đó tôi sử dụng prepareForSegue : phương pháp
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"detailSegue"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
SOEvent *selectedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indexPath.row];
[[SOEventManager sharedEventManager] setSelectedEvent:selectedEvent];
}
}
Trong trường hợp này, bộ điều khiển chế độ xem được đẩy hoàn hảo và thậm chí xuất hiện ngay lập tức nếu cần. Tôi đang thử nghiệm này trên iOS7 và Xcode 5. Tôi đã không gặp phải một vấn đề như thế này trước đây, bất kỳ trợ giúp sẽ được đánh giá rất nhiều.
bạn có chắc chắn bạn đã thực hiện đúng các hành động trong trình tạo giao diện không? có lẽ bạn đã kết nối sự kiện này, ví dụ, cả hai chạm vào bên trong và chạm vào bên trong thay vì chỉ chạm vào bên trong. hoặc có lẽ bạn cũng đã gán phân đoạn từ cả hai mã và một lần nữa trong trình tạo giao diện. bạn đã kiểm tra chúng chưa đó là một sai lầm phổ biến. –
Oh chết tiệt .. Bạn đang thực sự đúng, tôi gán các nút của tôi cũng trong các phương pháp xem nguồn dữ liệu bảng .. Cảm ơn bạn đã trả lời! –