我的 iOS 项目中有以下 Storyboard配置。
storyboard1->NavController-sceneA->stoyboard2/initialview
Storyboard2->场景B->场景C
-> 是一个“显示”转场 场景 A 加载 Storyboard并将其推送到其导航 Controller 。
- 场景 A 有一个实例类 X 的 Controller 。
- 场景 B 使用默认的 UIViewControoler 类。
- SceneC 有一个 Controller 实例类 Y。
两个类的实现如下
//ClassX.h//
@interface ClassX : UITableViewController
//ClassX.m//
@implementation ClassX
NSArray* model;
//..
@end
//ClassY.h//
@interface ClassY : UITableViewController
//ClassY.m//
@implementation ClassY
NSArray* model;
//..
@end
问题是,当我尝试加载场景 C 时,它尝试在其实现中使用名为“模型”的字段——但出于某种原因获取场景 A 的模型字段。为什么会这样,我应该如何纠正它?
最佳答案
您应该使模型成为类的属性,而不是像您那样声明它们。他们可能正在创建全局变量。或者在 @implementation 之后在 {} 内声明它们,以确保它们是属于类的变量。
所以要么:
@implementation{
NSArray *model
}
...
@end
或者更好地使用私有(private)属性并在代码中使用 self.model。:
所以在 classY.m 中尝试:
@interface ClassY ()
@property NSArray *model;
@end
@implementation ClassY
...
@end
对 ClassX 做同样的事情。
关于推送场景时 iOS Storyboard破坏变量?为什么?应该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29088532/