从AppDelegate导航时,UINavigationController上的双后退按钮

时间:2016-02-19 11:33:15

标签: ios objective-c

美好的一天

我正在开发一个用于显示pdf文件的应用程序。我有两个viewController,ListViewController用于列出我的所有pdf和PdfViewController用于查看pdf。因此,当我从外部应用程序导入pdf文件时,我会立即将其保存在app委托中,名为application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

并导航到PdfViewController。

我现在的问题是:如果我已经在视图中使用pdf(PdfViewController),当我从appDelegate推送到PdfViewController时,它会在顶部添加堆栈并为listViewController创建一个双后退按钮。这是我在下面的app delegate中的代码。

_window = [UIApplication sharedApplication].keyWindow;
            UIViewController *root = [_window rootViewController];
            UIStoryboard *stbd = root.storyboard;

PTPdfViewController *viewController = (PTPdfViewController*) [stbd 

instantiateViewControllerWithIdentifier:@"PTPdfViewController"];

[(UINavigationController*)self.window.rootViewController 

pushViewController:viewController animated:NO];

如何用当前推送的pdfViewController替换当前打开的pdfViewController。提前谢谢。

1 个答案:

答案 0 :(得分:0)

你可以通过两种方式来实现。

  1. 首先弹出到根视图控制器&然后再次推送到pdfviewcontroller。 (不好主意)

  2. 获取Root视图控制器,获取当前可见的视图控制器如果它已经在pdfViewcontroller中,只需用currentfile替换旧文件。如果当前视图控制器为listviewcontroller,则只需按pdfviewcontroller

  3. 即可

    获取可见视图控制器

    [UIApplication sharedApplication].keyWindow.visibleViewController获取当前显示的VC。