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

时间:2012-06-09 08:53:16

标签: iphone objective-c ios

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

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

[self.tabBarController setSelectedIndex:1]

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

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

1 个答案:

答案 0 :(得分:0)

如果您只想确定哪个视图可见,可以使用-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) {

       }
}  

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