将“void”发送到不兼容类型“UIViewController”的参数

Posted

技术标签:

【中文标题】将“void”发送到不兼容类型“UIViewController”的参数【英文标题】:Sending 'void' to parameter of incompatible type 'UIViewController' 【发布时间】:2014-11-19 08:48:51 【问题描述】:

我用 .xib 创建了一个模态 UIView,当我点击按钮时,我想显示这个 UIView。但是我在 presentViewController 中有一个错误:。感谢您的回答。

- (void)modal 
    modalViewController *mvc = [[modalViewController alloc] initWithNibName:@"modalViewController" bundle:nil];
    UIView * modal = [[UIView alloc] initWithFrame:CGRectMake(self.view.center.x/2, self.view.center.y/2, 240, 320)];
    modal.backgroundColor = [UIColor whiteColor];
    [modal addSubview:mvc.view];
    [self.view addSubview:modal];


- (IBAction)showBTN:(id)sender 

    [self presentViewController:[self modal] animated:YES completion:nil];


【问题讨论】:

【参考方案1】:

presentViewController:animated:completion: 第一个参数是UIViewController 的实例,而不是void

您尝试做的事情没有意义,因为您已经将 modalViewController 中的视图添加到当前 UIViewControllers 视图中。所以不用打presentViewController:animated:completion:

这会将视图添加到您当前的视图层次结构中:

- (IBAction)showBTN:(id)sender 
    [self modal];


还有一点需要注意的是,类应该以大写字母开头,所以你的modalViewController 类实际上应该命名为ModalViewController

【讨论】:

以上是关于将“void”发送到不兼容类型“UIViewController”的参数的主要内容,如果未能解决你的问题,请参考以下文章

将“double”发送到不兼容类型“id _Nullable”的参数

将 uiviewcontroller strong 发送到不兼容类型 id 的参数的警告

将“NSNumber *__strong”发送到不兼容类型“CLLocationDegrees”(又名“double”)的参数

指向整数转换的不兼容指针将“void *”发送到“PHImageContentMode”类型的参数(又名“枚举 PHImageContentMode”)

使用 userInfo (null) 发送到不可变对象的变异方法

Xcode 7 - 不兼容的块指针类型