UIViewController在按下按钮时接收通知并推送segue,但需要防止按下多个按钮和segue

时间:2015-02-04 06:06:14

标签: ios objective-c uiviewcontroller uinavigationcontroller nsnotificationcenter

我有一个带有根视图控制器的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,即使它们已经在那个按钮上。

我从来没有真正设置过这种方式,所以我不确定此时该做什么。如果它们已被推送到该视图控制器,那么我需要阻止它们被再次推到那里。

1 个答案:

答案 0 :(得分:1)

我最终为每个按钮添加了字符串标识符。按下按钮时,将传递字符串标识符。根据字符串标识符,我将选定的UIViewController类存储在属性中。

如果所选的UIViewController类与UINavigationController's visibleViewController属性匹配,那么我不会发布segue通知。