0

私が書いている現在のアプリには、リンクを含む UITextField があります。そこで、Safari の代わりに新しい View Controller を呼び出したいと思います。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

ビュー コントローラーの下の属性インスペクターで、タイトル 71 を呼び出しました。念のため、ストーリーボード ID と復元 ID 71 も呼び出しました。ご覧のとおり、main.m ファイルで 3 番目の 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];

No visible @interface for 'MyApplication' declares the selector 'presentViewController:animated:completion:' と書かれていますが、私が見たすべてのサンプルと質問は非推奨のメソッド presentModal を使用していますが、Xcode はこの新しいメソッド presentViewController を使用するように指示しています。それで、私が間違っていることを誰かが知っていますか?私は何かが欠けているに違いないが、私の人生では見つけられない. この問題についての洞察を事前に感謝します!!!

4

1 に答える 1

0

あなたが欠けているかもしれません:

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