この記事について
| 環境 | Xcode、Objective-C |
|---|---|
| 目的 | 画面(クラス)をまたいで変数を共有する |
| 結果 | AppDelegateにpropertyを作り、[[UIApplication sharedApplication] delegate]経由で参照する |
つまずきポイント要約
- AppDelegateは中央センターの役割。ここで作った変数はどのクラスからもアクセスできる
Xcode の AppDelegate は中央センターの役割をするので、AppDelegate 内で作った変数はどのクラスからもアクセスできる。
以下は AppDelegate の設定の手順。Single View Application でつくったものとする。
1.AppDelegate.h に全てのクラスから参照できる変数を設定する
//AppDelegate.h 内に記述
//全てのクラスから参照できる変数
@property (nonatomic, weak) NSString *shareString;
2.ViewController.h から AppDelegate.h をインポートする
//ViewController.h 内に記述
//インポート
#import "AppDelegate.h"
3.ViewController から AppDelegate 内の変数を参照する
//ViewController.m 内の viewDidLoad に記述
// AppDelegateのオブジェクトを取得する
AppDelegate *AD = (AppDelegate *)[[UIApplication sharedApplication] delegate];
//変数に文字列を代入する
AD.shareString = @"代入する文字列";
ラベルに表示したい場合
//ViewController.m 内の interface に記述
//変数 myString を宣言する
NSString *myString;
つづいて、
//ViewController.m 内の viewDidLoad に記述
//変数に文字列を代入する
AD.shareString = @"表示したい文字列";
myString = AD.shareString;
//ラベル(myLabelと命名)に表示
[self.myLabel setText:myString];
