菜鸟教程小白 发表于 2022-12-13 02:56:13

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 &lt;UIKit/UIKit.h&gt;

@interface DetailViewController : UIViewController &lt;UIGestureRecognizerDelegate&gt;

@property (nonatomic, strong) NSURL *url;

- (void)push;

@end
</code></pre>

<p>DetailViewController.m:</p>

<pre><code>- (void)push
{
    WebViewController *webView = [    initWithNibName:@&#34;WebViewController&#34; bundle:];

    webView.url = self.url;

    NSLog(@&#34;%@&#34;,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:@&#34;WebViewNotification&#34; object:nil];
}

- (void)webViewNotification:(NSNotification *)notification
{
    NSURL *url = ;

    WebViewController *webView = [ initWithNibName:@&#34;WebViewController&#34; 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]
查看完整版本: iphone - 覆盖 openURL 后无法推送 View Controller