我试图将一个变量值(在我的情况下是一个简单的整数)从一个UIViewController
(" MainVC")传递到另一个(" ChargeVC")。 / p>
我无法解决这个问题,在花了一天时间阅读可用的答案之后,我现在开了一个账号,所以我做了一个改变,得到一个对我有用的答案。我发现" 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
我完全错过了什么吗?任何帮助表示赞赏。
更新
我发现错误并发布了解释答案。如果你知道那里到底发生了什么,我很想知道。
答案 0 :(得分:1)
你不需要像
那样初始化它 @interface ChargeVC : UIViewController {
NSUInteger personIndex;
}
@property (nonatomic) NSUInteger personIndex;
@end
刚做
@interface ChargeVC : UIViewController
@property NSUInteger personIndex;
@end
很多。您可以通过self.personIndex
在.m中访问它们。此外,除非您了解或正在制作此产品,否则请不要使用非原子材料。这些东西令人困惑,如果你学习它,以后会更容易学习。 (我假设爱好项目,如果这是错误的道歉)。
否则,您的代码对我来说似乎是正确的。
答案 1 :(得分:1)
类似于奥斯卡所说的,我希望您的 personIndex ivar 与 personIndex 属性之间存在混淆。
我会这样做,删除ivar声明:
@interface ChargeVC : UIViewController
@property ( nonatomic ) NSUInteger personIndex ;
@end
此外,在您的@implementation
中,默认情况下会假设@synthesize
,您也可以将其排除在外。
答案 2 :(得分:1)
我发现了我的错误,似乎我从我的问题中遗漏了一段重要的代码,或者你可能已经立即认出了它。对于那个很抱歉。我会发布我学到的东西。
早些时候在“ChargeVC.m”中我设置了
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.view.backgroundColor = [UIColor blackColor];
}
return self;
}
由于我不完全理解的原因,我设置self.view.backgroundColor
的值会触发某些内容并且personIndex
变量总是丢失和/或在viewDidLoad
期间无法访问。我删除该功能后,personIndex
出现了。
感谢rdelmar,让我走上正确的道路,向所有其他人提供帮助。