在我正在编写的当前应用程序中,我有一个 UITextField,其中包含一个链接。所以我想调用一个新的视图控制器而不是 Safari。我可以在 Safari 中打开它,但我不希望用户离开我的应用程序。我做了一些研究,正在做以下事情。
我创建了一个名为 MyApplication 的新文件,并将以下内容放在 .m 文件中以覆盖 openURL
#import "MyApplication.h"
@implementation MyApplication
- (BOOL)openURL:(NSURL *)url
{
if ([self handleOpenURL:url])
return YES;
else
return [super openURL:url];
}
- (BOOL)handleOpenURL:(NSURL *)url
{
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"71"];
[self presentViewController:vc animated:YES completion:nil];
return YES;
}
@end
在 View Controller 下的属性检查器中,我将 Title 命名为 71。我还将情节提要 ID 和恢复 ID 命名为 71 以确保确定!如您所见,在 main.m 文件中,我已将第三个 nil 替换为 @"MyApplication"。
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, @"MyApplication", NSStringFromClass([AppDelegate class]));
}
}
但是,应用程序无法构建,因为在方法 handleOpenURL 中我在线上遇到错误
[self presentViewController:vc animated:YES completion:nil];
它说没有可见的@interface for 'MyApplication' 声明选择器'presentViewController:animated:completion:' 我看到的所有示例和问题都使用不推荐使用的方法presentModal,但Xcode 告诉我使用这个较新的方法presentViewController。那么有谁知道我做错了什么?我一定是错过了什么,但我终生无法找到。在此先感谢您对此事的任何见解!!!