目标C:如何从自定义UIButton类显示视图控制器?

时间:2016-03-28 22:16:34

标签: objective-c uiview uiviewcontroller uibutton uiview-hierarchy

我有以下视图层次结构:导航控制器,在其中我推动了另一个视图控制器,其中包含单元格中带有自定义UIButton的UITableView。我有另一个视图控制器(MyCustomViewController2),我想用动画显示所有这些东西。但我对此层次结构感到困惑,我不知道如何在自定义UIButton类中覆盖- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event方法。我到目前为止的代码是:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    MyCustomViewController2 *myVC = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"MyVC"];
    [self.window addSubview: myVC.view];
}

但它太糟糕了!而且我没有任何动画,我应该将其删除以删除...请问有人伸出援助之手吗?

1 个答案:

答案 0 :(得分:0)

It's highly recommended not to subclass a UIButton.所以我不愿意。

但由于UIButton是UIControl的子类,因此您可以直接使用此方法:

- (void)addTarget:(id)target
           action:(SEL)action
 forControlEvents:(UIControlEvents)controlEvents

代码中的示例可能如下所示:

[self.myButton addTarget:self action:@selector(showOtherVC) forControlEvents: UIControlEventTouchUpInside];

当用户从按钮上抬起手指时,这将查看特定方法(showOtherVC)的目标(self)

然后,您可以使用此UIViewController方法将当前View Controller以模态方式呈现新模式:

-(void)showOtherVC
{
     MyCustomViewController2 *myVC = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"MyVC"];
    [self presentViewController:myVC animated:true completion:nil];
}

在此处阅读有关UIControl的更多信息: UIControl Documentation

在这里查看其他UIViewController模态转换样式: UIViewController Documentation