我有一个类似于Apple的PageControl示例的项目。我有一个UIViewController“PhotoViewController”,它包含一个UIScrollView和一个UIToolbar。 UIScrollView加载另一个XIB和UIViewController“PhotoScrollViewController”。
在PhotoScrollViewController中,我有一个显示图像的UIButton。我在这个按钮上有一个IBAction,我想点击它来显示/隐藏PhotoViewController中的UIToolbar。
在PhotoViewController.h我有
@interface PhotoViewController : UIViewController <UIScrollViewDelegate> {
IBOutlet UIToolbar *toolBar;
..
}
@property (nonatomic, retain) UIToolbar *toolBar;
我在PhotoScrollViewController中尝试过一些东西,例如在PhotoScrollViewController.h中导入PhotoViewController.h并将其添加到界面,然后尝试通过我的函数访问它:
@implementation PhotoScrollViewController
- (IBAction)toggleMenu {
photoViewController.toolBar.hidden = NO;
}
但这不起作用。我也尝试过removeFromSuperView和self.parentViewController等一些东西。我不知道如何隐藏这个工具栏(我也尝试过alpha,我根本无法访问工具栏)。
我尝试使用toolBar.hidden = YES向PhotoViewController添加一个函数。如果我从PhotoViewController执行该函数,这是有效的,但如果我从PhotoScrollViewController访问它(在.h中使用PhotoViewController * photoViewController)它不起作用:
@implementation PhotoScrollViewController
- (IBAction)toggleMenu {
photoViewController.toolBar.hidden = NO;
[photoViewController toggleTopMenu];
[[PhotoViewController alloc] toggleTopMenu];
}
@implementation PhotoViewController
- (IBAction)toggleTopMenu {
toolBar.hidden = NO;
}
我也尝试将工具栏添加到PhotoScrollViewController,我可以切换它,但我无法弄清楚如何告诉主UIViewController解雇PhotoViewController ...所以无论我怎样攻击这个问题我都不知道如何在UIViewControllers之间正确地进行通信..我阅读的文档似乎遵循了我的尝试。
答案 0 :(得分:1)
基本上,你的问题似乎是你不能从另一个控制器引用一个控制器。这可以通过各种方式完成。
1:在加载应用程序时在应用程序委托中创建控制器,并公开对它们的引用,例如作为代表的属性。
2:在创建或显示PhotoScrollViewController时传递对PhotoViewController的引用。你说这不起作用:
@implementation PhotoScrollViewController
- (IBAction)toggleMenu {
photoViewController.toolBar.hidden = YES;
}
如果你的photoViewController参考是零,这可能不起作用的唯一方法。你在哪里/如何设置它?
答案 1 :(得分:1)
[photoViewController.navigationController setToolbarHidden:YES animated:NO];
仅当将photoViewController推入UINavigationController时才有效。否则,请设置toolBar.hidden = YES。