我有一个带有根视图控制器的UINavigationController
。我的UINavigationController
也被设置为我的应用Initial View Controller
。
在我的整个应用程序中,每当我想要segue时,我都会使用以下代码:
MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.navigationController pushViewController:myVC animated:YES];
这很有效。
我只为我的应用设置了一个新的通用按钮,该按钮显示在我的应用的每个屏幕上。如果用户按下此按钮,则会出现另外3个按钮,如果他们点击这3个按钮中的一个,则需要进行segue。
当按下3个按钮中的一个时,我通过NSNotificationCenter
发布通知。我的所有UIViewControllers都注册为此通知的观察者,当他们收到它时,他们被告知使用我在上面发布的相同代码推送视图控制器。
这完美无缺。用户被推送到新的UIViewController
。
但是,如果用户再次按下我的通用按钮,然后点击相同的按钮,它就会再次推送相同的UIViewController
,即使它们已经在那个按钮上。
我从来没有真正设置过这种方式,所以我不确定此时该做什么。如果它们已被推送到该视图控制器,那么我需要阻止它们被再次推到那里。
答案 0 :(得分:1)
我最终为每个按钮添加了字符串标识符。按下按钮时,将传递字符串标识符。根据字符串标识符,我将选定的UIViewController
类存储在属性中。
如果所选的UIViewController
类与UINavigationController's
visibleViewController
属性匹配,那么我不会发布segue通知。