0

セルの束を持つ 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 ロードリクエストを使用すると、機能します。

しかし、ユーザーが戻ることができる必要があります。

これを達成する方法はありますか?

4

2 に答える 2

0

UIWebViewgoBackメソッドを使用できます。

goBack
back-forward リストの前の場所をロードします。

これを実現するために、ナビゲーション バーまたは追加のツールバーにいくつかのボタンを追加できます。これは、新しいビュー コントローラー インスタンスをプッシュするよりも確実に優れた設計です。

ところで、セグエをストーリーボードのまったく同じView Controllerにドラッグすることにより、セグエを介してView Controllerをそれ自体にプッシュできます。

于 2013-10-13T23:10:14.793 に答える
0

次を使用して問題を修正しました。

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

ID でストーリーボード アイテムを取得し、古い pushViewController を使用します。

同じ効果が得られました。

于 2013-10-14T01:42:50.887 に答える