我的应用程序(登录)中有一个屏幕,可以从任何其他屏幕显示 我想将启动该屏幕的逻辑放在我的ViewControllers之外,因此它不会重复
这可能吗?
此屏幕也可能在我收到的NSNotificationCenter通知消息上加载
答案 0 :(得分:1)
因此,我将其放入控制器中,每个视图控制器都会调用此控制器来执行登录。请求登录时,将请求视图控制器(或其父级,如果它不是全屏)作为参数传递。
现在,当需要显示登录视图时,您可以通过一种通用的方式从登录控制器内部呈现它['请求视图控制器对“登录控制器”一无所知。和登录控制器'对请求的视图控制器一无所知。
当通知触发时,app委托可以从应用程序窗口获取根视图控制器,并将其作为请求视图控制器传递。
答案 1 :(得分:0)
您可以为登录屏幕创建一个ViewController,并在“身份检查器”下为其提供“故事板ID”。 当你想要显示它时,你可以像这样实例化它:
loginViewController = [[self storyboard] instantiateViewControllerWithIdentifier:@"storyboardID"];
之后,如果您使用的是navigationController,则可以将其推送或将其添加为子视图。
编辑:我怎么知道它是否存在:
NSArray *controllers = self.navigationController.viewControllers;
for (UIViewController* controller in controllers)
{
if ([controllers isKindOfClass:[LoginController class]])
{
NSLog(@"is already present");
}
}