OS X - 如何保存after-segue-view-controller的数据(NSArray或NSMutableArray)

时间:2016-02-28 13:52:48

标签: macos cocoa

我是OS X的新手。我创建了一个关于简单等待系统的OS X应用程序。

如果单击sendString按钮,TextField中的字符串将发送到下一个场景。 (Action segue是Show)

第一视图控制器:

- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender{
      WaitScene *destinationScene = [segue destinationController];
      destinationScene.receivedString = _textField.stringValue;
}

第二个视图控制器:

- (void)viewWillAppear{
      _myArray = [NSMutableArray array];
      [_myArray addObject:_receivedString];
      _labelNOW.stringValue = _myArray[0];
}

每次单击按钮,myArray似乎都会返回初始状态。我想我不应该使用viewWillAppear。我怎样才能展示myArray的琴弦?

1 个答案:

答案 0 :(得分:0)

每次调用NSMutableArray时,您都会重新创建一个新的空viewWillAppear。为了防止这种情况,只需确保只创建一次_myArray数组。

将第二个视图控制器更改为如下所示:

- (void)viewWillAppear{
      if (_myArray == nil) _myArray = [NSMutableArray array];
      // _myArray = [NSMutableArray array];
      [_myArray addObject:_receivedString];
      _labelNOW.stringValue = _myArray[0];
}

首次创建第二个视图控制器时,_myArray的值为nil。在此更新的代码中,您检查_myArray是否等于nil,如果是,则仅创建NSMutableArray。在对viewWillAppear的后续调用中,_myArray不是nil,因此代码只会继续使用相同的_myArray