如何处理 - (BOOL)应用程序:(UIApplication *)app openURL:(NSURL *)url在storyboard应用程序中?

时间:2014-02-14 22:07:53

标签: ios

我想用我的应用程序打开某些图像。我已经设置了URL方案,一切都很好,我采用了这种方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
  sourceApplication:(NSString *)source annotation:(id)annotation

但是如何在此之后访问我的视图控制器并告诉它在我的图像视图中打开图像?

我没有指向Storyboard或我的视图控制器的指针,如何防止以常规方式进一步加载应用程序?

例如我在启动时打开某个图像,如果我被告知要从另一个应用程序打开另一个文件,我不想这样做。

1 个答案:

答案 0 :(得分:1)

使用app.委托的self.window访问根视图控制器。然后从那里导航,例如子视图和类的实例。

更详细的答案: 假设根视图控制器是MasterViewController,它是UIViewController的子类。 在那个MasterViewController中你有一个UIView,其中就是一个UIImageView。

使用UIWindow从AppDelegate获取根视图控制器:

MasterViewController *master = (MasterViewController *)[self.window rootViewController]);

由于你很聪明,你设置了故事板,所以UIImageView在MasterViewController中有一个属性,让它称之为imageView。 所以它很简单,只需这样做:

UIImageView *imageView = [master imageView];
[imageView setImage:[UIImage imageWithContentsOfFile:[url path]]];

这样的事情。 您将需要导入您使用的所有类,例如MasterViewController。