从自己的View Controller调用View的方法,不工作

时间:2010-11-20 20:57:46

标签: iphone cocoa-touch uiview uikit uiviewcontroller

我有一个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方法的操作创建一个按钮实例时,它可以正常工作。

2 个答案:

答案 0 :(得分:1)

请放心,您拨打-closeMenu的地方没有任何区别。如果日志语句打印为null,则菜单变量为null。这并不意味着您没有“开放”实例 - 只是您的菜单变量没有指向它。

您需要为任何人发布更多代码,以解决为什么会发生这种情况,因为代码中的其他地方有错误。

答案 1 :(得分:1)

menu是一个出口吗?如果是这样,它是否挂在IB?你把笔尖装在哪里?

如果没有,你在哪里分配它?控制器是否为视图提供菜单?如果是这样的话,那发生了吗?如果视图创建或加载了自己的菜单视图,那么发生了,如果有的话?