【发布时间】:2014-01-09 19:33:55
【问题描述】:
我有一个UITabBarController,它有 4 个标签。这些选项卡中的每一个都是一个单独的UIViewController。我在这 4 个 VC 中的每一个上都有对象,它们使用 NSNotification 在按下某个对象时执行操作。 4 个 VC 都以相同的方式响应通知,因为它是每个页面上的类似对象。当这个对象被按下时,它会在当前视图控制器上呈现一个视图。问题是,如果我现在移动到其他 3 个选项卡中的任何一个,该视图也在他们的 VC 上。这是因为当在任何 VC 上按下通知时,所有 4 个选项卡上都会响应通知。我需要它只响应用户当前使用的 VC,而不是标签栏中的任何其他 VC。
有没有办法让它正常工作?也许是一个阈值,您可以在其中设置通知在被调用后可以执行其选择器的次数?这样我可以将其设置为 1,并且在任何给定时间,如果调用该通知,则只能调用选择器 1 次。
我使用的对象实现类型要求我使用NSNotification,因此无法更改我的交互方式。
编辑:
这个viewDidLoad 方法在我的标签栏中的 4 个 VC 的顶层 VC 上。他们四个要么直接使用它,要么继承自它。
- (void) viewDidLoad
{
...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didSelectItemFromCollectionView:) name:@"didSelectItemFromCollectionView" object:nil];
}
动作处理器:
- (void) didSelectItemFromCollectionView:(NSNotification *)notification
{
NSDictionary *cellData = [notification object];
if (cellData)
{
NewVC *pushToVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PushToVC"];
[self.navigationController pushViewController:pushToVC animated:YES];
}
}
4 个 VC 中的每一个都是一个UITableViewController,并且具有带有可以按下对象的单元格。这个NSNotificationCenter 操作是允许操作工作的原因。
【问题讨论】:
-
您能给我们一些代码以便我们提供帮助吗?
标签: ios objective-c uitabbarcontroller nsnotificationcenter