将NSString从一个类传递到另一个类

时间:2011-02-14 23:41:09

标签: iphone objective-c cocoa-touch

我有一个NSString,取自ViewController中的UITextField。我的每个其他ViewController也将使用此NSString。如何将此NSString传递给其他ViewControllers?

3 个答案:

答案 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类的属性并从那里获取。可以从您应用中的任何位置访问该代表。