ios - 整数值不会被方法改变

标签 ios objective-c integer

也许有人可以为我澄清一下。

我有 4 个 UITableViewControllers,第一个有一个属性

@property (nonatomic, assign) int editStarted;

我在 FirstViewController 中设置了这个属性:

-(id)init
{
    // Call the superclass's designated initializer
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {

    editStarted = 0; // NO
    }
    return self;
}

现在,当我从 View Controller 1 导航到 2 到 3 到 4,并在 FourthViewController 中执行类似的操作时:

FirstViewController *firstView = [[FirstViewController alloc] init];
  NSLog(@"editStarted: %d,",firstView.editStarted);

NSLOG 将打印 0。(如果我在 init 中给它另一个值,那么它将打印该值。)

所以回到 FirstViewController,我这样做,将值更改为 1:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 editStarted = 1;
}

现在,当我从 View Controller 1 导航到 2 到 3 到 4 时,值没有更改为 1,但仍然是 0。

这是标准行为还是我做错了什么? 我想到了将 editStarted 从 View Controller 1 传递到 2 到 3 到 4 的可能性,但我不确定这是否是正确的方法。这对我来说听起来有点多余。

最佳答案

这个:

FirstViewController *firstView = [[FirstViewController alloc] init];

创建与 VC 1 相同类的新实例。但它与您最初看到的实例不同,因此它具有不同的设置。

您应该使用导航 Controller 获取“真正的”VC 1 并记录其设置。


将变量从一个 VC 传递到下一个 VC 是一种标准方法,但这取决于您要做什么。在某些情况下,将一个值设置到 NSUserDefaults 中可能会更好,例如,这样可以从多个不同的屏幕检查/使用/更改它。

关于ios - 整数值不会被方法改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20683160/

相关文章:

c++ - ISO C++ 禁止比较指针和整数?

java - 如何检查值是否为整数类型?

c++ - GMP整数位数

ios - 将 Objective-C 项目合并到 Swift;最好的方法是什么?

iphone - 将图像叠加在背景上

ios - 以编程方式添加 WKWebView

objective-c - 错误 : 'row" undeclared UI Picker

ios - 呃,解雇 uiviewcontrollers 和 imagePickerController

ios - CALayer 扁平子层

ios - 在 iOS 中重新创建 Thrift 客户端