I am new to iPhone. I have small doubt. I have three strings in class BiblePlayerViewController and I want to pass those 3 strings to appdelegate from this class. How to do that?
4 回答
在 BiblePlayerViewController 中创建一个属性 NSDictionary 并将你的三个字符串添加到字典中,这样你就可以在任何你想要的地方阅读该字典
NSDictionary *FileDict = [[NSDictionary alloc] initWithObjectsAndKeys:str1,@"key1",str2,@"key2",str3,@"key3",nil];
创建类型为NSString
in的变量appdelegate.h
NSString *test;
导入appdelegate.h
现在BiblePlayerViewController.m
使用获取对 appdelegate 类的引用
Appdelegate *ad; //init with some object
//now access the NSString var u just created
ad.test=@"your string";
创建 Appdelegate 的静态引用,并在 Appdelegate 中将 NSStrings 声明为类变量
把这是appdelegate
+(Appdelegate*)getAppdelegate{
return self
}
然后在您的视图控制器中执行 appdelegate.string1 = string1 等等..您还可以将这些对象封装在一个数组中并将它们传递给 appdelegate 。
这个想法是获取 Appdelegate 的静态引用。
我认为您可以将 appdelegate 类的共享对象用于类似情况。
在 appdelegate 类中声明全局对象为
#define UIAppDelegate ((MyAppDelegateClass *)[UIApplication sharedApplication].delegate)
通过声明这一点,从任何导入 AppDelegate 类的类都可以使用 AppDelegate 类的这个共享对象。
那么您是否在 AppDelegate 中声明了三个属性
@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 设置一个值。
我认为这对你有帮助。