我在理解哪些类可以读取其他类中的哪些变量时遇到了一些麻烦。我在网上阅读了很多不同的东西,但似乎在这里找不到任何可靠的东西。在过去的两天里,我确实浪费了试图让我的程序正常工作,但没有类可以读取任何其他类变量。任何帮助将不胜感激。
这是我的 ViewController.h:
@interface ViewController : UIViewController
{
@public
NSString *nameOfLabel;
}
@property (strong, nonatomic) IBOutlet UILabel *firstLabel;
- (IBAction)Switch:(id)sender;
- (IBAction)changeLabel:(UIButton *)sender;
-(NSString *) nameOfLabel;
@end
nameOfLabel 是一个公共变量,应该可以被外部类访问,对吧?
视图控制器.m:
#import "ViewController.h"
#import "NewView.h"
@interface ViewController ()
@end
@implementation ViewController
- (IBAction)Switch:(id)sender {
NewView * new = [[NewView alloc] initWithNibName:nil bundle:nil];
[self presentViewController: new animated:YES completion:NULL];
}
- (IBAction)changeLabel:(UIButton *)sender {
nameOfLabel = @"Test Name";
_firstLabel.text = nameOfLabel;
}
-(NSString *) nameOfLabel {
return nameOfLabel;
}
@end
changeLabel 按钮将 *firstLabel.text 更改为“测试名称”。
第二类是NewView.h:
#import "ViewController.h"
@interface NewView : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *secondLabel;
- (IBAction)changeSecondLabel:(UIButton *)sender;
@end
和 NewView.m:
#import "NewView.h"
@interface NewView ()
@end
@implementation NewView
{
ViewController *view;
}
- (IBAction)changeSecondLabel:(UIButton *)sender {
view = [[ViewController alloc] init];
_secondLabel.text = view.nameOfLabel;
}
@end
changeSecondLabel 应该将 secondLabel.text 更改为 nameOfLabel ,即“测试名称”,但是,标签实际上消失了,这让我认为无法达到 nameOfLabel。我玩过nameOfLabel,将其设为@property,然后对其进行合成,并尝试将其放入{ NSString *nameOfLabel; } 在@implementation 下,但我仍然得到相同的结果。