找到在 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"]) {
//...
}
所以我正在使用 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"]) {
//...
}