iPhone初心者です。少し疑問があります。クラス BiblePlayerViewController に 3 つの文字列があり、これらの 3 つの文字列をこのクラスから appdelegate に渡したいと考えています。どうやってするか?
4 に答える
BiblePlayerViewController でプロパティ NSDictionary を作成し、3 つの文字列を辞書に追加して、いつでもどこでもその辞書を読み取ることができるようにします。
NSDictionary *FileDict = [[NSDictionary alloc] initWithObjectsAndKeys:str1,@"key1",str2,@"key2",str3,@"key3",nil];
同様のケースで、appdelegateクラスの共有オブジェクトを使用できると思います。
appdelegateクラスで、グローバルオブジェクトを次のように宣言します。
#define UIAppDelegate ((MyAppDelegateClass *)[UIApplication sharedApplication].delegate)
これを宣言することにより、AppDelegateクラスをインポートする任意のクラスから、AppDelegateクラスのこの共有オブジェクトを使用できます。
次に、AppDelegateで次のように宣言された3つのプロパティがありますか
@interface MyAppDelegateClass : NSObject <UIApplicationDelegate>
{
NSString *string1;
NSString *string2;
NSString *string3;
}
@property (nonatomic,retain) NSString string1;
@property (nonatomic,retain) NSString string2;
@property (nonatomic,retain) NSString string3;
@end
次に、AppDelegateの実装で
@implementation MyAppDelegateClass
@synthesize string1;
@synthesize string2;
@synthesize string3;
@end
文字列をAppDelegateに送信する必要があるクラスでは、次のように使用します。最初にAppDelegateクラスをインポートする必要があります。
#import "MyAppDelegateClass.h"
@interface MyCustomSenderClass : UIViewController
@end
そして実装では
@implementation MyCustomSenderClass
- (void) sendStringsToAppDelegate
{
UIAppDelegate.string1 = myString1;
UIAppDelegate.string2 = myString2;
UIAppDelegate.string3 = myString3;
}
@end
したがって、AppDelegateクラスをインポートする任意のクラスからAppDelegateに値を直接設定できます。
これはあなたに役立つと思います。
NSString
in型の変数を作成するappdelegate.h
NSString *test;
import appdelegate.h
inBiblePlayerViewController.m
を使用して appdelegate クラスへの参照を取得します
Appdelegate *ad; //init with some object
//now access the NSString var u just created
ad.test=@"your string";
Appdelegate の静的参照を作成し、NSStrings を Appdelegate のクラス変数として宣言します。
これはappdelegateです
+(Appdelegate*)getAppdelegate{
return self
}
次に、ビューコントローラーで appdelegate.string1 = string1 などを実行します..これらのオブジェクトを配列にカプセル化し、それらを appdelegate に渡すこともできます。
アイデアは、Appdelegate の静的参照を取得することです。