如何在UITabBarController上设置另一个视图的对象的.hidden属性

时间:2011-02-08 12:02:39

标签: iphone sdk tabs

亲爱的 - 我有一个基于标签的应用程序(作为XCode示例应用程序启动)。

一个选项卡用于选择图像(UIImagePickerController) - 按预期工作。 另一个选项卡用于在包含所选图像的UIImageView上显示CoreGraphics。这是在自定义UIView的drawRect:Method中完成的。

当选择新图像时,我需要重置UIView上的界面。

目前我的UIView中有一个-(IBAction)resetAll:(id)sender方法 - 当从同一视图上的按钮调用时,所有内容都会按预期重置。

但是,当我从ViewController.m文件的viewWillAppear方法调用resetAll方法时:

- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];    

TabBarEgAppAppDelegate *delegate = (TabBarEgAppAppDelegate *)[[UIApplication sharedApplication] delegate];


if(delegate.newphotopicked){

[myView resetAll:nil];

delegate.newphotopicked = NO;

}

resetAll方法中的NSLog被触发但参数(例如button.hidden = YES;)没有被设置。

这是因为UIView在某种程度上被TabBarViewController隐藏了吗?当标签更改时,我怎么能重置我的视图(UIView没有调用viewWillAppear吗?)。非常感谢你给我你的时间!

米@

为了澄清,ViewController在.h中有以下内容:

MyView *myView;
<。> <。>

- (void)viewDidLoad {
myView = [[MyView alloc] initWithFrame:CGRectZero];

[myView resetAll:nil];调用与应用程序中任何位置的按钮和调用具有相同的效果,包括UIView(MyView)本身。

我现在知道我已经严重联系或分类(请帮忙)。

米@

1 个答案:

答案 0 :(得分:0)

这是仅在第一次显示视图选项卡时发生,还是每次都发生?出口物体可能尚未创建,因此是零。您可以在NSLog调用所在的调试器中对此进行验证。如果这是真的,那么如果你将resetAll函数移动到viewDidAppear,那么一切都应该有效。