推送场景时 iOS Storyboard破坏变量?为什么?应该怎么做?

标签 ios storyboard segue corruption

我的 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/

相关文章:

ios - 更新核心数据模型实体和支持的 NSManagedobject 子类

ios - Storyboard UITableView 不显示静态内容

ios - 在其他 UIPageViewController 中执行 segue

swift - 确定交互式 TableView 标题中的节索引

ios - 使用包含另一个 View 的 Navigation Controller 在 segue 中设置属性

ios - 滚动UITableView有点生涩

ios - 如何取消 AWSTask<AWSS3TransferUtilityUploadTask *> 请求?

ios - Swift 3 - 异步显示警报 Controller ,长函数在后台运行

ios - 重复目标无法找到 Storyboard 中引用的类 - 原始目标可以。

ios - 检测同时按下两个或多个 UIButton