- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
NSString *storyName;
if (isIPAD)
storyName = @"Main_iPad";
else
storyName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyName bundle:nil];
RMViewController *controller = (RMViewController *)[storyboard instantiateInitialViewController];
NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
if (url != nil && [url isFileURL]) {
[controller handleOpenURL:url];
}
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSString *storyName;
if (isIPAD)
storyName = @"Main_iPad";
else
storyName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyName bundle:nil];
RMViewController *controller = (RMViewController *)[storyboard instantiateInitialViewController];
if (url != nil && [url isFileURL]) {
[controller handleOpenURL:url];
}
return YES;
}
这就是我在AppDelegate中所拥有的。这有助于我用新的方法覆盖旧的iPhone数据,如下所述:http://www.raywenderlich.com/1980/email-tutorial-for-ios-how-to-import-and-export-app-data-via-email-in-your-ios-app#comments
现在当我调用函数handleOpenURL数据保存得很好但是当我尝试根据新数据设置我的IBOutlets时,我的所有出口实际上都是零(用断点测试)。
我很困惑,因为我得到的新数据实际上是正确的,但当我尝试将其分配给IBOutlet(文本字段或标签)时,它没有响应。
我认为这与去背景有关,因为如果我杀了应用程序并稍后启动它,应用程序就会加载新数据。
任何帮助??
答案 0 :(得分:2)
此:
RMViewController *controller = (RMViewController *)[storyboard instantiateInitialViewController];
创建一个全新的视图控制器,它根本不与应用UI相关联。它执行的基于数据的操作很可能运行良好,但无法更改应用程序UI。
您应该做的是在现有的UI设置中找到现有的RMViewController
实例,可能是通过应用window
及其与根视图控制器的链接。
如果失败,尽管这可能是正确的解决方案,至少会显示RMViewController
实例,以便加载其视图。同样,演示文稿将来自根视图控制器。
来自你的评论:
RMViewController *controller = (RMViewController *)self.window.rootViewController;