1

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

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

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

4

2 回答 2

1

简短的回答是,是的,这是可能的。

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

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

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

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

然后在viewWillAppear:您的视图控制器中,为正在呈现的控制器添加操作:

[myButton addTarget:self 
             action:@selector(myButtonWasPressed:) 
   forControlEvents:UIControlEventTouchUpInside];
于 2013-07-27T18:55:23.230 回答
0

给你的按钮一个containingViewController属性,不要忘记在你移动按钮时设置它。

于 2013-07-27T18:38:24.663 回答