2010-11-20 88 views
-1

我有一个视图控制器在其自己的视图中调用一个名为closeMenu的方法。如下所示closeMenu从superView中移除一个名为menu的UIImageView并将其设置为nil。该方法在视图内调用但在从视图控制器调用时不起作用从其自己的视图控制器调用视图的方法,不工作

调用方法时,视图控制器将UIImageView的“菜单”视为零,即使它存在。

有关如何让视图控制器从超级视图中删除菜单并将其设置为等于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方法只是正常的动作。

回答

1

menu一个插座?如果是这样,它是在IB连接?你是否将它的笔尖放在它的上面?

如果不是,您将分配给它在哪里?控制器是否给出了它的菜单视图?如果是这样,那么发生了吗?如果视图创建或加载自己的菜单视图,有还没有发生,如果有的话?

+0

不使用IB,编码所有内容。菜单在视图中初始化,在视图控制器中没有提及它。在上面编辑以显示菜单init的位置 – John 2010-11-20 22:59:10

1

请确保'你在哪里拨打-closeMenu从任何地方都没有区别。如果您的日志语句输出为空,那么您的菜单变量为空。这并不意味着你没有'打开'实例 - 只是你的菜单变量没有指向它。

您需要为任何人发布一些更多的代码,以便弄清楚为什么会发生这种情况,因为您在代码中的其他位置有错误。

+0

不,它在分配给视图中的按钮实例时工作正常。但无论如何增加了信息。 – John 2010-11-20 22:10:31

+0

如果视图在收到可能导致其创建或加载菜单视图的消息之前收到closeMenu消息,它可能会有所不同。 – 2010-11-20 22:48:28

+0

有2个测试按钮:1从控制器发送closeMenu方法,然后其他按钮从视图发送方法。查看按钮关闭菜单很好,但视图控制器没有。 'menu'在视图的头文件中 – John 2010-11-20 22:52:17

相关问题