相关疑难解决方法(0)

有条件地从AppDelegate开始在故事板中的不同位置

我有一个设置有工作登录和主视图控制器的故事板,后者是用户在登录成功时导航到的视图控制器.我的目标是在验证(存储在钥匙串中)成功时立即显示主视图控制器,如果验证失败则显示登录视图控制器.基本上,我想在AppDelegate中执行此操作:

// url request & response work fine, assume success is a BOOL here
// that indicates whether login was successful or not

if (success) {
          // 'push' main view controller
} else {
          // 'push' login view controller
}
Run Code Online (Sandbox Code Playgroud)

我知道方法performSegueWithIdentifier:但是这个方法是UIViewController的实例方法,所以不能从AppDelegate中调用.如何使用我现有的故事板来做到这一点?

编辑:

故事板的初始视图控制器现在是一个没有连接任何东西的导航控制器.我使用setRootViewController:区别因为MainIdentifier是一个UITabBarController.那么这就是我的线条:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{        
    BOOL isLoggedIn = ...;    // got from server response

    NSString *segueId = isLoggedIn ? @"MainIdentifier" : @"LoginIdentifier";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
    UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:segueId];

    if (isLoggedIn) { …
Run Code Online (Sandbox Code Playgroud)

objective-c storyboard uiapplicationdelegate segue

107
推荐指数
5
解决办法
5万
查看次数

iOS 5故事板,以编程方式确定路径

我无法使用故事板实现以下目标:

未完成设置时:运行app - > show settings view controller - > show main navigation controller设置完成后:运行app - > show main navigation controller

基本上,我希望应用程序在某些情况下以编程方式从设置视图开始,否则直接跳到主导航控制器.

我确实设法使用主导航控制器中的模态样式segue显示设置视图,但我不知道如何在显示主导航控制器之前显示它.有任何想法吗?

objective-c storyboard ios5

18
推荐指数
2
解决办法
2万
查看次数

检测iphone 5 4"屏幕

可能重复:
如何检测iPhone 5(宽屏设备)?

有没有办法可以检测当前设备是否是iphone 5?更具体地说,如果它使用新的4"屏幕?

iphone xcode objective-c ios

17
推荐指数
2
解决办法
2万
查看次数

如何通过Swift for iOS调用不同的故事板?

我为每个iOS设备系列创建了一个带有三个不同故事板的应用程序.现在我不知道如何在应用程序启动时选择正确的Storyboard?我正在检查屏幕高度以识别不同的设备:

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
    // Check Device Family
    var bounds: CGRect = UIScreen.mainScreen().bounds
    var screenHeight: NSNumber = bounds.size.height
    var deviceFamily: String
    if screenHeight == 480 {
        deviceFamily = "iPhoneOriginal"
        // Load Storyboard with name: iPhone4
    } else if screenHeight == 568 {
        deviceFamily = "iPhone5Higher"
        // Load Storyboard with name: iPhone5
    } else {
        deviceFamily = "iPad"
        // Load Storyboard with name: iPad
    }

    return true
}
Run Code Online (Sandbox Code Playgroud)

有人可以在Swift中给我一个有效的解决方案吗?我只找到了ObjC的解决方案.

谢谢.

storyboard ios swift

5
推荐指数
1
解决办法
2万
查看次数