0

我在代码中创建了一个自定义 UIBarButton 来关闭自定义 viewController。但是,编译器不喜欢我的语法。

下面是创建 UIBarButtonItem 的代码:

//grab VC
detailC* detailVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"detailVC"]; //This custom VC
is a sub-class of UIViewController

//Create barbuttonitem
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]
                                    initWithImage:[UIImage imageNamed:@"close.png]
                                    style:UIBarButtonItemStylePlain
                                    target:self
                                   action:@selector(dismss:detailVC)];//ERROR HERE

//Here is the dismiss method: 
-(void) dismissVC: (UIViewController*) vc {

  [vc dismissViewControllerAnimated:YES completion:nil];
}

编译器的错误是:'Expected :'

有一个修复选项insert :。如果我选择修复,它将选择器更改为:

action:@selector(dismissVC: controller:)];

这没有意义,也给出了警告'Undeclared Selector"

我究竟做错了什么?

注意:这是在 appDelegate 中发生的,所以我不能使用 self 来关闭 VC。

4

1 回答 1

1

您尝试做的事情从根本上说是不正确的。dismissVC:您的方法可以采用的唯一有效参数是UIBarButtonItem触发操作的参数。您不能将视图控制器传递给该方法。

但你不需要。既然你想解雇“自我”,只需调用dismissViewController.self

//Create barbuttonitem
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]
                                initWithImage:[UIImage imageNamed:@"close.png"]
                                style:UIBarButtonItemStylePlain
                                target:self
                                action:@selector(dismiss:)];

这是更新的方法:

- (void)dismiss:(UIBarButtonItem *)button {
    [self dismissViewControllerAnimated:YES completion:nil];
}
于 2019-01-17T17:04:27.850 回答