【问题标题】:Can't change value of BOOL from another class, IOS无法从另一个类 IOS 更改 BOOL 的值
【发布时间】:2013-01-12 04:06:40
【问题描述】:

我遇到了一个简单的问题,我试图从另一个类中更改一个类的布尔值但它没有发生,它返回NO

//在推送其他viewcontroller之前

-(IBAction)editWOD
{
    self.editGirlController= [[AddGirlsView alloc] init];
    self.editGirlController.isEditModeON=YES;
    self.editGirlController.editgirls=girls;
    [self performSegueWithIdentifier:@"editModeGirls" sender:self];
}

AddGirlsView .h

@interface AddGirlsView : UIViewController
{
    BOOL isEditModeON;

}
@property BOOL isEditModeON;

AddGirlsView .m

@synthesize isEditModeON;
- (void)viewDidLoad
{
    [super viewDidLoad];
    if (isEditModeON==NO) {
        NSLog(@"Edit Mode is OFF");
    }
    else{
        [self populateViewOnEdit];
    }


}

代码有什么问题?

+++++++++增加答案+++++++++++++++++

感谢乔尔,这就是答案

-(IBAction)editWOD
{
    [self performSegueWithIdentifier:@"editModeGirls" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"editModeGirls"])
    {
        AddGirlsView *editGirlController  = [segue destinationViewController];
        editGirlController.isEditModeON=YES;
        editGirlController.editgirls=girls;
    }
}

【问题讨论】:

    标签: ios objective-c boolean


    【解决方案1】:

    我认为问题在于您分配并初始化 AddGirlsView。当您执行 segue 时,它​​可能会重新实例化另一个 AddGirlsView。您应该在 prepareForSegue 中设置此变量。

    if ([segue.identifier isEqualToString:@"editGirlsMode"]) {
        [segue.destinationViewController setIsEditModeOn:YES];
        [segue.destinationViewController setEditGirls:girls];
    }
    

    【讨论】:

    【解决方案2】:
    @property (nonatomic) BOOL isEditModeON;
    

    【讨论】:

    • 不是真正的描述性答案
    • 在这种情况下,将属性设为非原子不会产生任何影响。
    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2017-10-30
    • 2016-03-18
    • 1970-01-01
    • 2020-10-26
    • 2017-08-15
    相关资源
    最近更新 更多