передача NSString из одного класса в другой - PullRequest
1 голос
/ 15 февраля 2011

У меня есть строка NSString, которая берется из UITextField в ViewController.Каждый из моих других ViewController будет также использовать эту строку NSString.Как я могу передать эту NSString другим ViewControllers?

Ответы [ 3 ]

4 голосов
/ 15 февраля 2011

Вы хотите иметь свойство в каждом из ваших контроллеров

@interface MyViewController : UIViewController{
    NSString *title;
}
@property (retain) NSString *title;
@end;


@implementation MyViewController
@synthesize title;
@end;

Используйте его как:

MyViewController *myVC = [[MyViewController alloc] initWithFrame:...];
myVC.title = @"hello world";

Вы должны быть знакомы с Управление памятью

1 голос
/ 15 февраля 2011

Создайте класс для совместного использования ваших общих объектов.Получите его статическим методом, затем прочитайте и запишите его свойства.

@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;
0 голосов
/ 15 февраля 2011

Если строка остается неизменной и никогда не изменяется, вы можете создать файл с именем define.h (без файла .m) и иметь следующую строку:

#define kMyString   @"Some text"

Тогда везде, где вам нужна строка, просто импортируйте файл определения и используйте константу.

#import "defines.h"

Гораздо проще, чем создание пользовательских классов.

РЕДАКТИРОВАТЬ:

Не видел, что вам нужно получить оттекстовое поле.

В этом случае его можно сохранить как свойство класса делегата приложения и получить его оттуда.Доступ к делегату можно получить из любого места в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...