例如,如果要扩展UIButton并使其呈现新视图。我可以在自定义UIButton类中创建一个方法来执行此操作。如果我使用最终切换视图的目标方法初始化按钮,则它需要知道当前处于哪个视图。

ExpandedViewController *expandView = [self.storyboard instantiateViewControllerWithIdentifier:@"ExpandedView"];
[self presentViewController:expandView animated:NO completion:nil];

这就是代码在视图控制器中的样子,但是我如何将视图传递给按钮,以便它知道自己要定位的视图而不是self。

最佳答案

简短的答案是,可以。

长答案是您不应该这样做,因为它违反了MVC的规则。您的按钮是视图,不应充当控制器(这是控制器的作用)。而是将逻辑留给视图控制器。

要将正确的视图控制器设置为按钮的目标,可以执行以下操作:

在视图控制器的viewDidDisappear:中,删除将要离开按钮的控制器的操作:

[myButton removeTarget:self
                action:@selector(myButtonWasPressed:)
      forControlEvents:UIControlEventTouchUpInside];

然后在视图控制器的viewWillAppear:中,为显示的控制器添加操作:
[myButton addTarget:self
             action:@selector(myButtonWasPressed:)
   forControlEvents:UIControlEventTouchUpInside];

关于ios - NSObject如何知道绘制在哪个 View 中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17901130/

10-15 17:30