6

ストーリーボードを使用するタブ バー コントローラー アプリがあります。各タブには UIWebview があります。リンクが外部リンクの場合 (自分のサイトではない場合)、ユーザーが Webview のリンクをクリックしたときにリンクをキャプチャしたい 別の UIViewControl でリンクを開きたい。(popupi Twitter iphone アプリのように)

たった今; リンクをキャプチャするためのこのコードを取得しました (リンクが bing.com の場合、別のビュー コントローラーを開く必要があります) が、別の UIViewController (この場合は PopViewController) を開くことができません。それは私にこのエラーを与えます:

「GundemViewController」の目に見える @interface はセレクター「pushViewController:animated:」を宣言しません

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {

//CAPTURE USER LINK-CLICK.

NSURL *url = [request URL];

NSString *urlString = [url absoluteString];

/******
 UIWebViewNavigationTypeLinkClicked: When user click on a link in the app it senses the action
 */

if (navigationType == UIWebViewNavigationTypeLinkClicked) {
    if ([urlString hasPrefix:@"http://www.bing.com/"]) {

        PopViewController *popUpView = [[PopViewController alloc] initWithNibName:@"PopupViewController" bundle:nil];

        [self pushViewController:popUpView animated:YES];
        return NO;
    }
}


return YES;
}
4

2 に答える 2

11

各タブにナビゲーション コントローラーを埋め込むことができます。

UITabBarController
    Tab1 View Controller
    Tab2 View Controller
    Tab3 View Controller

あなたが持っている

UITabBarController
    Tab1 Navigation Controller
        Tab1 View Controller
    Tab2 Navigation Controller
        Tab2 View Controller
    Tab3 Navigation Controller
        Tab3 View Controller

等々。-pushViewController:animated:ナビゲーション コントローラーのインスタンスで のみ呼び出すことができます。

アプリ デリゲートでは、おそらく各ビュー コントローラーを初期化し、それらを配列に配置してから、その配列をタブ バー コントローラーに割り当てます。ナビゲーション コントローラーを追加するには、追加の手順があります。

UIViewController *tab1Controller = [[MyViewController alloc] initWithNibNamed:@"MyViewController" bundle:nil];
UINavigationController *tab1Nav = [[UINavigationController alloc] initWithRootViewController:tab1Controller];

// etc

次に、タブ バー コントローラーのビュー コントローラーの配列を、作成したナビゲーション コントローラーに設定します。

ビュー コントローラーでは、 on を呼び出すのではなく、-pushViewController:animated:onselfを呼び出しますself.navigationController

編集:

ナビゲーションコントローラーが必要ない場合は、使用できます

[self presentViewController:popUpView 
                   animated:YES 
                 completion:nil];

ポップアップを表示します。ポップアップで、ユーザーが閉じるボタンに触れたときに、

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

それを却下します。

于 2013-04-06T15:24:03.290 に答える