例如,如果要扩展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/