我有一个View Controller在自己的视图中调用一个名为closeMenu的方法。 closeMenu如下所示从superView中删除一个名为menu的UIImageView,并将其设置为nil。从视图中调用时,该方法有效,但从视图控制器调用时则无法工作
调用方法时,视图控制器会将UIImageView'菜单'看作nil,即使它存在。
关于如何让视图控制器从superview中删除菜单并将其设置为nil的任何想法?
查看控制器:
loadview {
View *mainView = [[View alloc] initWithFrame:CGRectMake(0,0,320,480)];
self.view = mainView;
[mainView release];
}
//Call closeMenu in View
[(View *)self.view closeMenu];
查看:
menu = [[UIImageView alloc] initWithImage:image];
[self addSubview:menu];
-(void)closeMenu {
NSLog(@"%@", menu); //Displays: (null), only when called by controller
if( menu != nil) {
[menu removeFromSuperview];
self.menu = nil;
}
}
当我在视图中使用针对closeMenu方法的操作创建一个按钮实例时,它可以正常工作。
答案 0 :(得分:1)
请放心,您拨打-closeMenu
的地方没有任何区别。如果日志语句打印为null,则菜单变量为null。这并不意味着您没有“开放”实例 - 只是您的菜单变量没有指向它。
您需要为任何人发布更多代码,以解决为什么会发生这种情况,因为代码中的其他地方有错误。
答案 1 :(得分:1)
menu
是一个出口吗?如果是这样,它是否挂在IB?你把笔尖装在哪里?
如果没有,你在哪里分配它?控制器是否为视图提供菜单?如果是这样的话,那发生了吗?如果视图创建或加载了自己的菜单视图,那么发生了,如果有的话?