私が書いている現在のアプリには、リンクを含む 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 を使用するように指示しています。それで、私が間違っていることを誰かが知っていますか?私は何かが欠けているに違いないが、私の人生では見つけられない. この問題についての洞察を事前に感謝します!!!