【问题标题】:Hiding a button in parent view from its modal view?从其模态视图中隐藏父视图中的按钮?
【发布时间】:2011-06-26 21:14:19
【问题描述】:

我有一个带有隐藏按钮的父视图,以及一个取消隐藏该按钮的方法。该父视图有一个模态视图,我需要在其中调用隐藏按钮的方法。

ParentViewController.m

- (void)unhideButton {
    myButton.hidden = NO;
    NSLog(@"Unhide");
}

ModalViewController.m

- (void)levelComplete {
    ParentViewController *controller = [[ParentViewController] alloc] init];
    [controller unhideButton];
    [controller release];
}

NSLog 消息Unhide 已成功显示在控制台中,但是当我关闭模态视图控制器时,该按钮仍处于隐藏状态。我做错了什么?

【问题讨论】:

  • 按钮隐藏在哪里?可能会再次调用它。
  • 我在界面生成器中设置为隐藏。

标签: iphone objective-c cocoa-touch uiviewcontroller uibutton


【解决方案1】:

模态视图控制器自动引用使用parentViewController 属性呈现的视图控制器。所以你可以直接说,

[self.parentViewController unhideButton];

levelComplete 方法中。

但是是的,创建一个新实例并在其上调用方法不会像 Ryan 所说的那样影响原始实例。

【讨论】:

  • 这就是您要寻找的答案。
【解决方案2】:

为什么ModalViewController,大概是ParentViewController的一个实例,实例化了一个new ParentViewController?我认为您需要做的是在创建时将对现有 ParentViewController 的引用传递给 ModalViewController,然后在 ModalViewController 中它可以在父按钮上设置隐藏属性。

如果您想遵循良好的设计实践,ParentViewController 需要将其按钮的管理委托给 ModalViewController。 ParentViewController 将遵循一个简单的协议,将按钮暴露出来,并在呈现之前将自己设置为 ModalViewController 的委托。

【讨论】:

  • 阅读cocoa core competencies guide,它将带您了解委托的概念、它如何在可可中使用以及如何在您的对象中实现它。
  • 委托是可可的两种主要模式之一。是掌握mac和iphone编程的一把钥匙。确保你真的理解它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 2018-01-29
  • 2014-11-11
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多