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

标签 ios iphone xcode uiviewcontroller uistoryboard

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

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

我的问题是,是否有一个函数可以返回哪个 Storyboard 已被初始化/正在使用?原因是我想根据正在使用的 Storyboard 加载不同的变量公差。

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

感谢您的宝贵时间。

最佳答案

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

每个 View Controller 都有一个 storyboard 属性,指向从中加载它的 Storyboard。不过,这可能对您没有帮助—— Storyboard没有您可以检索的标识符,因此仅仅拥有一个指向 Storyboard的指针并不能让您区分 Storyboard。

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

处理此问题的一种方法是将您需要的信息存储在 View Controller 的“用户定义的运行时属性”中。您可以只存储一个标识符,也可以直接存储“可变公差”。假设您只想存储一个标识符。向您的 View Controller 添加一个属性:

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

接下来,在每个 Storyboard的 View Controller 的用户定义属性中设置键 storyboardID 的值。在每个 Storyboard中选择您的 View Controller 并选择身份检查器:

identity inspector

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

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

关于ios - 找到ViewController中初始化了哪个StoryBoard? Xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29964318/

相关文章:

ios - 调用函数并在展开可选值时意外发现 nil

ios - 一个接一个地动画 3 个 View

swift - Xcode 提示链接错误 : "Undefine symbol: ' _OBJC_CLASS_$_SKAdImpression'"after pod GoogleMobileAdsMediationAdColony

xcode - 在不启动模拟器的情况下在 Xcode 中运行 Objective-C

ios - 从存储在 Core Data 中的 NSData 播放视频

ios - 使用 nsbundle 读取 plist,在一种情况下它有效,而在几乎类似的情况下它不起作用

ios - 比较 UITextField 的文本和字符串时 if 语句出错

ios - CGPattern 与 swift

iPhone "Web Site Error"

iphone - 在lua中播放gif?