0

在我正在编写的当前应用程序中,我有一个 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。那么有谁知道我做错了什么?我一定是错过了什么,但我终生无法找到。在此先感谢您对此事的任何见解!!!

4

1 回答 1

0

可能是你错过了:

#import <UIKit/UIKit.h>
于 2013-02-22T05:08:04.343 回答