0

理解できない奇妙な問題が発生しているため、どこからデバッグを開始すればよいかわかりません。

まず、要件

UISplitViewがあります。マスタービューには、さまざまなビューを詳細ビューにロードするテーブルが含まれています。1つのテーブルセルに対して、Webサイトをフルスクリーンでロードする必要があります。したがって、マスタービューを非表示にして詳細ビューのサイズを変更するのではなく、ビューコントローラーを表示しています。私が問題を抱えているのはこれです。

コード

以下は私が現在持っているコードです-混乱を避けるために大幅に削除されました

-- MASTER VIEW --

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    ProjectWebViewController *detailView=[[ProjectWebViewController alloc] init];
    UIViewController  *localdetailViewController = detailView;

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:localdetailViewController];
    [self presentViewController:navController animated:YES completion:nil];
}

次に、提示されたViewControllerに次のものがあります

-- PRESENTED VIEW CONTROLLER --

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIWebView * webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];

    NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
   [webView loadRequest:request];

    [[self view] addSubview:webView];

   UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:@selector(closeSelf)];
    [[self navigationItem] setLeftBarButtonItem:backBtn];
}

-(void)closeSelf
{
    [[self navigationController] dismissViewControllerAnimated:YES completion:nil];
}

問題

上記は1つの例外を除いてうまく機能します。ナビゲーションバーに追加した戻るボタンは、クリックしても何もしません。ただし、読み込まれたWebページの空白をクリックすると、戻るボタンが機能します。私はこれを何度もテストしました。空白をクリックしてからWebページのリンクをクリックしても、現在のWebページでさらに空白がクリックされるまで、戻るボタンは再び機能しなくなります。

誰かが私を正しい方向に向けることができますか?

ありがとう

4

2 に答える 2

1
UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:@selector(closeSelf)];

target は nil ではなく self に設定する必要があります

UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(closeSelf)];
于 2012-10-22T16:13:16.623 に答える
0

ページは、分割ビューで詳細ビュー コントローラーとしてプッシュされるのではなく、画面全体を引き継いで UIView として画面に追加し、それを親に追加して、全体を心配する必要がないようにすることをお勧めします。ナビゲーションコントローラー。次に、単純に呼び出して Web ビューを閉じることができます[self.view removeFromSuperview];

createModalWebView行選択のための didSelectRowForIndexPath 呼び出しの内部。以下は、提供されたコードに基づいて動作するはずのテストされていないコードの一部です。

- (void)createModalWebView{
        UIWebView * webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];

        NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
       [webView loadRequest:request];

        //YOUR MASTERVIEW 
        [[self view] addSubview:webView];

        UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:@selector(closeSelf)];
        [[self navigationItem] setLeftBarButtonItem:backBtn];
    }

-(void)closeSelf
{
    //REMOVE THE WEBVIEW FROM SCREEN
    [[self view] removeFromSuperview];
}
于 2012-10-22T14:41:07.613 に答える