セルの束を持つ UITableView を持つストーリーボード以外のアプリがあります。セルをクリックすると、UIWebView でビュー コントローラーをプッシュすると、タップされたセルに基づいてローカルの html ファイルが読み込まれます。
この UIWebView に他のリンクがある場合は、UIWebView デリゲート メソッド shouldStartLoadWithRequest を次のコードと共に使用します。
if(navigationType == UIWebViewNavigationTypeLinkClicked) {
//When a html link is clicked in uiwebview
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
//Get components of url
NSArray *urlComponents = [urlString componentsSeparatedByString:@"/"];
//Get last component which should be wanted file name
NSString *wantedLink = [urlComponents objectAtIndex:[urlComponents count]-1];
//Get the url without the dot
NSArray *fileComponents = [wantedLink componentsSeparatedByString:@"."];
NSString *wantedFile = [fileComponents objectAtIndex:0];
ALSDetailViewController *superDetail = [[ALSDetailViewController alloc] initWithNibName:@"ALSProtocolDetailViewController" bundle:nil];
self.alsProtocolDetailViewController = superDetail;
//Check for each wanted file name to see if it matches another file
if ([wantedLink isEqualToString:@"VTachPulseStable.html"]) {
//Open different protocol xib with html file name as parameter, and push the view in
self.alsProtocolDetailViewController.title = @"Ventricular Tachycardia With Pulse";
self.alsProtocolDetailViewController.protocolURL = wantedFile;
self.alsProtocolDetailViewController.protocolSubTitle = @"Stable Without Decompensation";
[self.navigationController pushViewController:self.alsProtocolDetailViewController animated:YES];
return NO;
}
}
このコードは、私の作業中の古い非ストーリーボード アプリからのものです。
基本的に、現在同じビューを新しい loadRequest でリロードし、それをスタックの一番上にプッシュするため、ユーザーは最後の loadRequest に戻ることができます。
ストーリーボードでは、セグエでこれと同じ機能を実現する方法がわかりません。これらのアクションを呼び出して、コントローラーをスタックにプッシュする必要があります。
performSegueWithIdentifier を試しましたが、うまくいきませんでした。
ビューコントローラーの新しいインスタンスをスタックにプッシュせずに、webview に NSURL ロードリクエストを使用すると、機能します。
しかし、ユーザーが戻ることができる必要があります。
これを達成する方法はありますか?