ios - 无法传递 UIVewController 的实例 - iOS

标签 ios objective-c cocoa-touch uiviewcontroller presentviewcontroller

我有一个带有我制作的方法的应用程序,想法是这个方法将打开我想要的任何 View Controller 。我做到了,所以我必须拥有许多相同代码的副本。但是,它不起作用,Xcode 不断出现错误:

Invalid operands to binary expression (UIViewController ) and 'unsigned long()(const char*)')



这是我的方法:
-(void)open_view_controller:(UIViewController *)controller_name :(NSString *)view_name {

    controller_name *screen = [[controller_name alloc] initWithNibName:view_name bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentViewController:screen animated:YES completion:nil];
}

我只是想避免这样做:
CallCreator *screen = [[CallCreator alloc] initWithNibName:@"CallCreator" bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:screen animated:YES completion:nil];

我能做些什么来解决这个错误?我不明白出了什么问题,我传入了正确的类型 - UIViewController .

谢谢你的时间,丹。

最佳答案

您应该使用 Class而不是 UIViewController *

- (void)presentViewControllerOfClass:(Class)controllerClass viewName:(NSString *)viewName;
{
    UIViewController *screen = [[controllerClass alloc] initWithNibName:viewName bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentViewController:screen animated:YES completion:nil];
}

这将像
[self presentViewControllerOfClass:MyViewController.class viewName:@"MyViewController"];

关于ios - 无法传递 UIVewController 的实例 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31692610/

相关文章:

ios - 如何调试AudioServicesCreateSystemSoundID返回的错误-1500?

iphone - 播放png动画时出现延迟

ios - UIView 不遵守 UIScrollView 中的自动布局约束

iphone - 在 Xcode 中以编程方式按下 UITabBar 按钮

iOS 11 问题与 navigationBar prefersLargeTitles

ios - 如何在 swift 4 中使用 google api 计算两个位置之间的距离

iphone - Xcode 错误实例方法 -addAttachment withImageNamed 未找到

ios - 使用 FMDB 将数据插入 SQLite 时,dispatch_async 上的 EXC_BAD_ACCESS

objective-c - 如何将 JSON 字符串转换为 NSArray?

ios - 将 UITableView 分类为多个部分