gpt4 book ai didi

iphone - pushViewController 不适用于 TabbarController

转载 作者:可可西里 更新时间:2023-11-01 03:39:23 28 4
gpt4 key购买 nike

我有一个使用 Storyboard的标签栏 Controller 应用程序。每个选项卡都有一个 UIWebview。如果链接是外部链接(如果不是我的站点),我想在用户单击 Webview 上的链接时捕获链接 我想在不同的 UIViewControl 中打开链接。 (就像 popupi Twitter iphone 应用那样)

现在;我得到了用于捕获链接的代码(如果链接是 bing.com 那么它应该打开另一个 View Controller )但我无法打开另一个 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;
}

最佳答案

您可以在每个选项卡中嵌入导航 Controller ,这样就可以:

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

等等。您只能在导航 Controller 的实例上调用 -pushViewController:animated:

在您的应用委托(delegate)中,您可能会初始化每个 View Controller ,将它们放入一个数组中,然后将该数组分配给选项卡栏 Controller 。要添加导航 Controller ,您还有一个额外的步骤:

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

// etc

然后将标签栏 Controller 的 View Controller 数组设置为您创建的导航 Controller 。

在您的 View Controller 中,不是在 self 上调用 -pushViewController:animated:,而是在 self.navigationController 上调用它。

编辑:

如果你不需要导航 Controller ,你可以使用

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

显示弹出窗口。在弹出窗口中,当用户触摸关闭按钮时,使用

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

关闭它。

关于iphone - pushViewController 不适用于 TabbarController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15852438/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com