iphone - 覆盖 openURL 后无法推送 View Controller
<p><p>我正在尝试覆盖我的应用程序的 openURL 方法来拦截 UITextView 中的链接点击。 UITextView 位于基于导航的 DetailViewController 中,当用户单击链接时,我想将 WebView 推送到导航堆栈上。</p>
<p>我通过将截获的 url 记录到控制台来验证我的方法正在被调用,但导航 Controller 根本没有推送我的 WebViewController。我在界面生成器中制作了一个按钮,并将其添加到与 textview 相同的 View 中,只是为了验证 WebView 是否被推送。该按钮仅用于测试目的。</p>
<p>问题似乎是,当我从 AppDelegate 调用该方法时,navigationController pushViewController 代码没有被触发,即使 NSLog 显示我正在获取有效的截获 url。</p>
<p>感谢您提供的任何帮助!代码:</p>
<p>在 AppDelegate.m 中:</p>
<pre><code>- (BOOL)openURL:(NSURL *)url
{
DetailViewController *webView = [init];
webView.url = url;
;
return YES;
}
</code></pre>
<p>DetailViewController.h:</p>
<pre><code>#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController <UIGestureRecognizerDelegate>
@property (nonatomic, strong) NSURL *url;
- (void)push;
@end
</code></pre>
<p>DetailViewController.m:</p>
<pre><code>- (void)push
{
WebViewController *webView = [ initWithNibName:@"WebViewController" bundle:];
webView.url = self.url;
NSLog(@"%@",self.url);
;
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我通过使用 NSNotification 解决了这个问题。下面的代码供其他找到此内容的人使用:</p>
<p>AppDelegate.m:</p>
<pre><code>- (BOOL)openURL:(NSURL *)url
{
[ postNotification:];
return YES;
}
</code></pre>
<p>DetailViewController.m:</p>
<pre><code>- (void)viewDidLoad
{
;
[ addObserver:self selector:@selector(webViewNotification:) name:@"WebViewNotification" object:nil];
}
- (void)webViewNotification:(NSNotification *)notification
{
NSURL *url = ;
WebViewController *webView = [ initWithNibName:@"WebViewController" bundle:];
webView.url = url;
;
}
</code></pre></p>
<p style="font-size: 20px;">关于iphone - 覆盖 openURL 后无法推送 ViewController ,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/17325676/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/17325676/
</a>
</p>
页:
[1]