2014-08-27 63 views
1

我正在使用Parse,并且我在应用程序中实现的一件事是它们的内置PFLogInViewController。该控制器将在应用程序中显示两次 - 当应用程序第一次启动并且用户未登录时,以及用户点击我的应用程序的“Log out”按钮时(退出时会将它们带回到PFLogInViewController,因为您需要登录才能使用该应用)。
我想用Storyboard来设置它,因为我的应用程序的其余部分是如何布置的。
如何设置在这两次访问的中央视图控制器(PFLogInViewController)?我已经Subclassed PFLogInViewController并设置它,我只需要建议如何将它放在Storyboard以及如何将它连接到我的意见。
为了让这个问题尽可能多的帮助我,我的问题的总体主题是如何建立一个中心Login/ViewController,可以在应用程序的不同点使用Storyboard访问。
附加是我想要完成的基本想法。我还没有成功地继续使用最初的TabBarController,而且我不知道如果我无法继续使用LoginController作为初始ViewController,我该如何做。
我在Swift编程,如果它很重要。 enter image description here在故事板中创建中央注销视图控制器

回答

1

根据您的应用,有几种方法可以做到这一点。一种方法是将一个UIViewController拖放到故事板上,但不要将它连接到任何东西(不是segue)。为它创建一个故事板ID,如“MyLoginVC”。做UIViewController的必要的子类化并将类附加到你的VC。然后,当你想要显示的VC简单地做下面的连接谁给你的注销按钮

id destinationVC = [self.storyboard instantiateViewControllerWithIdentifier:@"MyLoginVC"]; 
[self.navigationController pushViewController:destinationVC animated:YES]; 

另外,如果你想显示登录VC的第一个VC,当您启动应用程序,那么也许在你的AppDelegate

// Load Root view controller 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    self.rootVC = [storyboard instantiateInitialViewController]; 
    self.window.rootViewController = _rootVC; 
    [self.window makeKeyAndVisible]; 

    // Load Login view controller 
    id initialVC = [storyboard instantiateViewControllerWithIdentifier:@"MyLoginVC"]; 
    [initialVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [_rootVC presentModalViewController:initialVC animated:NO]; 

当您与您的登录VC完成(即成功登录),然后登录内VC

[self dismissViewControllerAnimated:NO completion:nil]; 

还或者实例化与someth第一个VC从登录VC内部类似于以下内容。请注意,由于您首先将根VC加载到上面,因此它已经在那里,并且登录VC位于其上。当你关闭登录VC时,底层的VC应该准备好摇摆和滚动。否则,您可以执行以下操作:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    RootTabBarController *tbController = (RootTabBarController *)[self.storyboard instantiateViewControllerWithIdentifier:@"rootTabBarController"]; 
    [self presentViewController:tbController animated:YES completion:NULL]; 
} 
+0

真棒!我结束了对初始视图控制器和注销按钮的模式视图控制器实现。非常感谢你的回应! – dcgoss 2014-08-28 16:58:47

1

我想你想要的是放松的继续。下面是我遵循的开卷赛格瑞的说明:https://github.com/bradley/iOSUnwindSegueProgramatically

如果链接死了,这里就是它说:

在你的故事板创建两个视图控制器。

子类UIViewController两次,一次用于故事板中的每个视图控制器。

将这些视图控制器连接到故事板中的视图控制器。

在第一个视图控制器和第二个视图控制器之间通过控制+从第一个拖动到第二个视图控制器。

点击您创建的segue并在属性检查器中给它一个标识符。

在第一个视图控制器上创建一个按钮,并将其链接到其UIViewController子类中的IBAction。

当按下此按钮时,应出现第二个故事板。要做到这一点(我们在编程这样做)把下列刚才创建的动作的实现:

[self performSegueWithIdentifier:@"nameOfTheSegueBetweenOneAndTwo" sender:self]; 

与下列创建的第一个视图控制器的FPGA实现第二个方法:

- (IBAction)returnToStepOne:(UIStoryboardSegue *)segue { 
    NSLog(@"And now we are back."); 
} 

此方法将解除任何视图控制器回到此视图控制器。请注意,我们在视图控制器中实现了我们希望返回的方法。

回到故事板。关注第二个视图控制器。如果它处于活动状态,则应在其下方看到一个带有3个符号的黑条。其中一个是橙色的,并且在悬停时会显示该视图控制器所代表的UIViewController子类的名称。从这个符号控制拖动绿色符号,这意味着'退出'。您应该看到所有可用的segue展开,当您在您的条痕板上显示的UIViewController子类中创建Segue展开实现时,XCode会自动枚举这些展开。因此,您应该看到segue'returnToStepOne'作为选项。选择它。

在故事板的文档大纲中,找到第二个视图控制器的部分。您应该看到下面列出的一个项目,其中带有一个灰色的符号,表示“将...从退出...退出”。点击这个项目。

重要且容易遗漏的步骤如下!

在故事板的右侧,在属性检查器中,您应该看到两个字段。一个用于“标识符”,另一个用于“操作”。在大多数情况下,'行动'字段将有文本'returnToStepOne:',这是我们想要的,但'标识符'字段将是空白的。用这个文本填充这个字段:'returnToStepOne'(注意我们省去了冒号)。

在第二个视图控制器上创建一个按钮,并将其链接到其UIViewController子类中的IBAction。

在刚刚创建的方法实施,把下面的代码:

[self performSegueWithIdentifier:@"returnToStepOne" sender:self]; 

运行应用程序。你现在应该能够从第二个视图控制器放松到第一个。

+0

+1对于一个很棒的教程,但我发现其他答案更详细地解决了我的应用程序。但是,我将来肯定会参考这个答案。谢谢! – dcgoss 2014-08-28 16:56:54

+0

@dcgoss没问题,很高兴能帮到你! – Jacob 2014-08-28 16:57:31

相关问题