今天 - 扩展调用App中的特定ViewController

时间:2014-09-17 06:46:13

标签: xcode ios8 ios-app-extension

在我今天的扩展程序中,我使用以下代码启动我的应用程序:

NSURL *url = [NSURL URLWithString:@"hdb://"];

[[self extensionContext] openURL:url completionHandler:nil];

启动应用程序后是否可以调用特定的ViewController?在我的应用程序中,所有ViewControllers都使用它们的segues调用:

[self.mainSlideMenu.leftMenu performSegueWithIdentifier:@"NewsPhoneSegue" sender:self];

2 个答案:

答案 0 :(得分:1)

我通过在今天的扩展程序中编写了一个在UserDefaults中的Int来解决它,我现在从我下载的xml文件和我的应用程序的第一个VC中通过“case”检查值。因此,应用程序按照设置的要求启动案例0,案例1应用程序使用新闻启动,案例2启用其他视图,依此类推。在每种情况下,我添加了将Int重置为0,否则当通过图标启动应用程序时,我的设置将被忽略,因为该值是从上次使用扩展程序时存储的。

调用openURL之前今天扩展中的代码:

NSString *ZwischenZiel = [[self.todayParser.todayArray objectAtIndex:indexPath.row] View];

NSInteger Ziel = [ZwischenZiel integerValue];

NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.company.HdB"];

[sharedDefaults setInteger:Ziel forKey:@"ViewValue"];

[sharedDefaults synchronize];

并在应用程序的第一个viewController中:

NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.company.HdB"];

NSInteger Wert = [sharedDefaults integerForKey:@"ViewValue"];

switch (Wert) {
    case 0:
        //if-else for passing the right segue respecting settings


    if ([manualStartSeite isEqual:@"lalala"]) {

        [self.mainSlideMenu.leftMenu performSegueWithIdentifier:@"lalalaPhoneSegue" sender:self];

    } else {


    }

    break;

case 1:
    //News
    [self.mainSlideMenu.leftMenu performSegueWithIdentifier:@"NewsPhoneSegue" sender:self];

    [sharedDefaults setInteger:0 forKey:@"ViewValue"];

    [sharedDefaults synchronize];

    break;

case 2:

答案 1 :(得分:0)

如果我确实理解了您的要求,您可以在应用程序的最前端创建一个视图控制器,并且在其视图中,您可以使用标识符方法调用perform segue来调用您的特定视图控制器。希望它有所帮助。