どのクラスが他のクラスのどの変数を読み取ることができるかを理解するのに苦労しています。私はオンラインでさまざまなことを読んできましたが、ここでしっかりしたものを見つけることができないようです。プログラムを機能させるために過去 2 日間を文字通り無駄にしましたが、どのクラスも他のクラス変数を読み取ることができません。どんな助けでも大歓迎です。
これは私の 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 はパブリック変数であり、外部クラスからアクセスできるはずですよね?
ViewController.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 を「テスト名」に変更します。
2 番目のクラスは 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 の下ですが、それでも同じ結果が得られます。