iOS:在视图中调用委托方法以使该视图成为模态视图



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

实际应用比上述应用更复杂,因为 TabBar 及其所有关联的视图位于应用程序委托中加载的另一个视图控制器中。(我是这个应用程序的贡献者,最初的开发人员以其无限的智慧决定让事情变得非常神秘。而且我不想实施使用类似以下内容的解决方案......

[self.tabBarController setSelectedIndex:1]

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

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

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

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

编辑:在阅读您的问题后。我认为您想将sender参数发送到您的委托方法以确定它来自哪里。i,e:

如果委托方法定义为:

-(void)someMethod:(id)sender;

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

-(void)someMethod:(id)sender {
    UIView *aView = (UIView*)sender;
        if(aView == viewA) {
       }
        if(aView == viewB) {
       }
}  

希望这有所帮助,或者至少让您走上弄清楚的道路!

最新更新