私は、さまざまなタイプのテーブルビューセルを含むテーブルビューを持っています。いずれかのセルには、2つのボタンがあり、押されたときにView Controllerをロードします。iOS segueが2回実行される
- (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];
}
私のbuttonSegueは、新しいView Controllerをプッシュすることになっています。代わりに、一度押すとどういうわけか、それは二度押しているように見えるので、私は次の警告を得る:私はアプリがすぐにポップアップ表示したいイベントがあるので、それは、クラッシュにつながる私の場合は
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.
をそれは私のテーブルビューに戻るビューコントローラです。私はこのためにalertviewを使用して、次でイベントを処理します。それは私が面白い私は「通常の」テーブルビューのセルから他のセグエを持っていることに注意することがあります
- (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];
}
}
、その場合には、私はprepareForSegueを使用します:メソッド
- (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];
}
}
この場合、View Controllerは完全にプッシュされ、必要な場合はすぐにポップされます。私はiOS7とXcode 5でこれをテストしています。私は前にこのような問題に遭遇していません、どんな助けも大いに評価されるでしょう。
あなたはインターフェースビルダーでアクションを正しく配線していますか?たぶんあなたは、内側に触れるだけでなく、内側に触れるのではなく内側に触れるというイベントを結んでいるかもしれません。あるいは、コードビルダーとインターフェースビルダーの両方からSegueを割り当てたこともあります。あなたはそれらをチェックしましたか?それはよくある間違いです。 –
ああああ。あなたは実際には正しいです、私はまた、テーブルビューのデータソースメソッドで私のボタンを割り当てる..あなたの答えをありがとう! –