gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:20:00 25 4
gpt4 key购买 nike

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com