找到在 ViewController 中初始化了哪个 StoryBoard? Xcode

Find which StoryBoard has been initialised in ViewController? Xcode

所以我正在使用 Xcode 制作应用程序...而不是使用尺寸 类 或自动布局来考虑各种 iOS 屏幕尺寸,我做了一个AppDelegate.m 中的屏幕高度测试并根据 return 编辑的屏幕高度加载特定的 Storyboard;这样,所有 storyboards 都可以使用相同的 ViewController.

我的应用程序成功地做到了这一点,并根据设备高度加载了四个 Storyboards 之一,然后所有这些都由唯一的 ViewController.

控制

我的问题是,是否有一个函数可以return Storyboard 已经initialised/is 在使用?原因是我想根据正在使用的 Storyboard 加载不同的变量公差。

我四处搜索但似乎找不到,我只找到了一个资源 (youtube),它甚至描述了这种方法。

感谢您的宝贵时间。

如果您在运行时设置情节提要,您只需在应用委托中保留一个枚举变量,该变量知道它是情节提要的哪个版本运行。这样,每当您需要分叉代码时,您只需使用 switch 语句即可。

根据上面Bravo先生的说法,我是这样实现的:

.h中:

    enum deviceTypes
        {
            iPhoneScreen35,
            iPhoneScreen4,
            iPhoneScreen47,
            iPhoneScreen55
        };

    typedef NSInteger devState;

    devState deviceInUse;

AppDelegate.m中,根据使用Storyboard设置类型

    deviceInUse = iPhoneScreen35;

.m中,根据在AppDelegate.m中设置的类型设置变量:

   -(void)SetVariablesForDevice{

       if(deviceInUse == iPhoneScreen35){
              //stuff
       }
       if(deviceInUse == iPhoneScreen4){
              //stuff
       }
       if(deviceInUse == iPhoneScreen47){
              //stuff
       }
       if(deviceInUse == iPhoneScreen55){
              //stuff
       }

   }

My question is, is there a function that can return which Storyboard has been initialised/is in use?

每个视图控制器都有一个 storyboard 属性 指向从中加载它的故事板。不过,这可能对您没有帮助 - 故事板没有您可以检索的标识符,因此仅具有指向故事板的指针不会让您区分故事板。

The reason being is I want to load different variable tolerances based on which Storyboard is in use.

处理此问题的一种方法是将您需要的信息存储在视图控制器的 "user defined runtime attributes" 中。您可以只存储一个标识符,也可以直接存储 "variable tolerances"。假设您只想存储一个标识符。将 属性 添加到您的视图控制器:

@interface MyViewController : UIViewController
//...
@property(nonatomic) NSString *storyboardID;
//...
@end

接下来,在每个故事板的视图控制器的用户定义属性中设置键 storyboardID 的值。 Select 每个情节提要中的视图控制器并选择身份检查器:

完成!现在您可以读取代码中的值:

if ([self.storyboardID isEqualToString:@"iPhone4Storyboard"]) {
    //...
}