我有一个NSString,取自ViewController中的UITextField。我的每个其他ViewController也将使用此NSString。如何将此NSString传递给其他ViewControllers?
答案 0 :(得分:4)
您希望每个控制器都有property
@interface MyViewController : UIViewController{
NSString *title;
}
@property (retain) NSString *title;
@end;
@implementation MyViewController
@synthesize title;
@end;
使用它像:
MyViewController *myVC = [[MyViewController alloc] initWithFrame:...];
myVC.title = @"hello world";
您应该熟悉Memory Management
答案 1 :(得分:1)
创建一个用于共享公共对象的类。使用静态方法检索它,然后读取和写入其属性。
@interface Store : NSObject {
NSString* myString;
}
@property (nonatomic, retain) NSString* myString;
+ (Store *) sharedStore;
@end
和
@implementation Store
@synthesize myString;
static Store *sharedStore = nil;
// Store* myStore = [Store sharedStore];
+ (Store *) sharedStore {
@synchronized(self){
if (sharedStore == nil){
sharedStore = [[self alloc] init];
}
}
return sharedStore;
}
// your init method if you need one
@end
换句话说,写:
Store* myStore = [Store sharedStore];
myStore.myString = @"myValue";
并读取(在另一个视图控制器中):
Store* myStore = [Store sharedStore];
myTextField.text = myStore.myString;
答案 2 :(得分:0)
如果字符串保持不变,并且永远不会更改,则可以创建名为defines.h的文件(不包含.m文件)并使用以下行:
#define kMyString @"Some text"
然后,只要您需要字符串,只需导入定义文件并使用常量。
#import "defines.h"
比制作自定义类简单得多。
编辑:
没看到你需要从文本字段中抓取。
在这种情况下,您可以将其存储为app delegate类的属性并从那里获取。可以从您应用中的任何位置访问该代表。