0

我有一个带有两个视图 A 和 B 的 TabBar 消息传递应用程序。在视图 A 中,我声明了一个委托类型的对象,该对象在视图 B 中有一个委托方法。现在,每当视图 A 中发生某些事情时,委托对象中的方法都会获取调用,然后触发视图 B 中的委托方法。每当发生这种“事情”时,我想要发生的是,如果视图 A 可见,我希望标签栏将视图切换到视图 B。如果视图 B 可见,则视图不会发生任何事情。我该如何做到这一点?

实际的应用程序比上面描述的更复杂,因为 TabBar 及其所有关联视图都在另一个视图控制器中,该控制器在 appdelegate 中加载。(我是这个应用程序的贡献者,原始开发人员以其无限的智慧决定让事情变得非常神秘。)而且我不想实现使用类似...的东西的解决方案

[self.tabBarController setSelectedIndex:1]

...因为这不是我希望它发生的方式。每当调用视图 A 中的委托时,我只想使 B 中的视图可见。谢谢。

我编辑了我的帖子:这一行 [self.tabBarController setSelectedIndex:1] 及其上方和下方的子句构成了一行。我用省略号强调。

4

1 回答 1

0

如果您只想确定哪个视图可见,您可以使用以下-isDesendentOfView:方法:

  if([viewA isDescendentOfView:someView]) {
      //viewA is visible as a subview to `someView`
 }

编辑:看完你的问题。我认为您想将sender参数发送到您的委托方法以确定它来自何处..即:

如果您的委托方法被定义为:

-(void)someMethod:(id)sender;

在您的委托中,您将执行以下操作:

-(void)someMethod:(id)sender {

    UIView *aView = (UIView*)sender;

        if(aView == viewA) {

       }

        if(aView == viewB) {

       }
}  

希望这会有所帮助,或者至少让您走上解决问题的道路!

于 2012-06-09T08:58:13.350 回答