我试图将一个UIViewController(“MainVC”)的变量值(在我的情况下为简单整数)传递给另一个(“ChargeVC”)。

我很难让它正常工作,花了一天的时间,仔细阅读可用的答案后,我现在开设了一个帐户,因此我需要进行一些更改以获得适合我的答案。我发现“This”很有帮助,并认为它应该可以工作,但对我而言却不行。

我显然是“xcode”和“Objective-C”的新手,但是我具有扎实的“PHP”和“Javascript”知识。

这是我的代码:

MainVC.m

NSUInteger index = 4;  //will be an index ID used for accessing a table row

ChargeVC *myChargeViewCont = [[ChargeVC alloc] init];
myChargeViewCont.title = @"Charge User";
myChargeViewCont.personIndex = index;

NSLog(@"person index MainVC: %d", [myChargeViewCont personIndex]);

[self.navigationController pushViewController:myChargeViewCont animated:YES];

ChargeVC.h
@interface ChargeVC : UIViewController {
    NSUInteger personIndex;
}
@property (nonatomic) NSUInteger personIndex;
@end

ChargeVC.m
#import "ChargeVC.h"
@implementation ChargeVC

@synthesize personIndex;

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"person index ChargeVC: %d", personIndex);
}

作为检查,我尝试在“MainVC”中一次输出值,在“ChargeVC”中一次输出值。这是日志:
2014-05-11 12:17:51.242 Kunden[58238:60b] person index ChargeVC: 0
2014-05-11 12:17:51.244 Kunden[58238:60b] person index MainVC: 4

我在这里完全错过了什么吗?任何帮助表示赞赏。

更新

我发现了错误,并发布了答案进行解释。如果您知道那里到底发生了什么,我会很想知道。

最佳答案

您不需要像这样来初始化它

    @interface ChargeVC : UIViewController {
    NSUInteger personIndex;
    }
    @property (nonatomic) NSUInteger personIndex;
    @end

只是做
 @interface ChargeVC : UIViewController
 @property NSUInteger personIndex;
 @end

足够了。您可以通过执行self.personIndex在.m中访问它们。另外,除非您了解非原子性物质或将其用于生产,否则请勿打扰非原子性物质。这些东西令人困惑,如果您正在学习,以后再学习它会更容易。 (我假设是业余爱好项目,如果这是错误的,则表示歉意)。

否则,您的代码对我来说似乎是正确的。

10-08 07:45