我有一个带有两个视图的TabBar消息传递应用程序,A和B.在视图A中,我声明了一个类型为delegate的对象,它在视图B中有一个委托方法。现在,只要在视图A中发生某些事情,调用委托对象,然后触发视图B中的委托方法触发。每当发生这种“某事”时我想要发生的是,如果它是可见的视图A,我希望标签栏将视图切换到视图B.如果视图B可见,则视图没有任何反应。我该如何实现这一目标?
实际应用程序比上面描述的更复杂,因为TabBar及其所有相关视图位于appdelegate中加载的另一个视图控制器中。 (我是这个应用程序的贡献者,原始开发人员以他们无限的智慧决定让事情变得非常神秘。)而且我不想实现使用某些东西的解决方案......
[self.tabBarController setSelectedIndex:1]
...因为这不是我希望它发生的方式。我只想在视图A中的委托被调用时使B中的视图可见。感谢。
我编辑了我的帖子:这行[self.tabBarController setSelectedIndex: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) {
}
}
希望这会有所帮助,或者至少让你走上解决问题的道路!