我有一个新手问题。你如何从另一个类访问一个属性?
在我的程序中,我有一个视图,其中有三个级别:简单,中级和困难。我有三个带标签的按钮(我尝试过这些东西,所以我称之为那些按钮:try1,try2和try3)我创建了一个int,它按下了按钮的标签。所以,我的第一个文件的h:
@property (strong, nonatomic) IBOutlet UIButton *try3;
@property (strong, nonatomic) IBOutlet UIButton *try2;
@property (strong, nonatomic) IBOutlet UIButton *try1;
@property int level;
-(IBAction)buttonClicked:(id)sender;
m文件中的方法:
- (IBAction)buttonClicked:(id)sender {
self.level = [sender tag];
NSLog(@"tag is %d", self.level);
}
现在,在我的其他视图控制器中,我想访问属性" level"改变一些事情,如:
if (level == 0) { do somtething
}
if (level == 1) { do somtething
}
etc...
答案 0 :(得分:0)
假设第二个视图控制器是由第一个视图控制器呈现的,而不是尝试访问第一个视图控制器的属性,第二个应该具有level
的自己的属性,并且第一个视图控制器应该填充第二个视图控制器在呈现第二个视图控制器时的属性。
如果您搜索Stack Overflow“在视图控制器之间传递数据”(或其变体),您将找到很好的示例。它取决于第二个视图控制器的呈现方式(例如,如果使用了segue,则在第一个视图控制器的prepareForSegue
中设置第二个视图控制器的属性)。
答案 1 :(得分:0)
您需要为嵌入式init
实施自定义viewController
,例如:
<强> EmbeddedViewController.h 强>
#import <UIKit/UIKit.h>
@interface EmbeddedViewController : UIViewController
- (id)initWithLevel:(int)level;
@end
<强> EmbeddedViewController.m 强>
#import "EmbeddedViewController.h"
@interface EmbeddedViewController ()
@end
@implementation EmbeddedViewController {
int selectedLevel;
}
- (id)initWithLevel:(int)level {
if (self = [super init]) {
selectedLevel = level;
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
您必须使用firstViewController
:
- (IBAction)buttonClicked:(id)sender {
self.level = [sender tag];
EmbeddedViewController *evc = [[EmbeddedViewController alloc] initWithLevel:[sender tag]];
[self.navigationController pushViewController:evc animated:YES];
}