Как получить доступ к строковой переменной в одном контроллере представления к другому контроллеру представления

Я новичок в разработке iphone. Теперь я хочу получить доступ к строковой переменной во всех контроллерах представления, но я знаю, что нужно объявлять переменные в методе делегата, но я не могу получить к нему доступ, пожалуйста, помогите мне.

Mainviewcontroller -> Viewcontroller1 _--> viewcontroller2 -> viewcontroller3 -> subwebview.

Я создал один контроллер основного представления, а класс подпредставления - Viewcontroller1, viewcontroller2, viewcontroller3. И subwebview является подклассом всех трех контроллеров просмотра (Viewcontroller1, Viewcontroller2, Viewcontroller3).

Теперь я хочу получить доступ к строковым переменным в subwebview из всех контроллеров представления (Viewcontroller1, Viewcontroller2, Viewcontroller3). Как я могу получить доступ к строковым переменным в SUBWEBVIEW.

Я использую программу чтения RSS-каналов и извлекаю данные.

я объявил все контроллеры представления в своих строковых переменных, например,

 NSString * currentElement;
 NSMutableString * currentTitle, * currentDate, * currentSummary, * currentLink;

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

Спасибо.


person Pugalmuni    schedule 09.02.2010    source источник


Ответы (5)


Самый простой - просто передать ссылку на parentViewController, а затем вы сможете получить доступ к своим переменным через эту ссылку. Не уверен, какие имена классов вы используете, но что-то вроде этого:

MyChildController *tmpViewController = [[MyChildController alloc] initWithNibName:@"ChildView" bundle:nil];
tmpViewController.myParentController = self;

Это, конечно, требует, чтобы вы создали свойство в дочернем контроллере для родительского:

ParentController *myParentController;

Также добавьте @property и @synthesize

person willcodejavaforfood    schedule 09.02.2010
comment
Какими будут атрибуты свойства для этого ParentController. - person SNR; 11.03.2011

Добавьте приведенную ниже функцию в свой контроллер основного представления:

SecondViewController *second= [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

tmpViewController.myParentController = self;

Добавьте указанное ниже свойство в свой второй контроллер представления:

FirstViewController *first;

Затем синтезируйте его как обычно.

person rajesh evv    schedule 19.03.2012

Я не уверен, что это правильный путь, но я следил за этим, создал новый файл класса заголовка и импортировал этот заголовок во все контроллеры просмотра. Объявите строку во вновь созданном файле.

person Nithin    schedule 09.02.2010
comment
Таким образом вы теряете все преимущества ООП - person Nader; 19.02.2010

Самый простой способ сделать это - сделать ваши переменные свойствами вашего subwebview.

@interface SubWebView : UIViewController {
    NSString * currentElement;
    NSMutableString *currentTitle;
    NSDate *currentDate;
    NSMutableString *currentSummary;
    NSURL *currentLink;
}

@property (copy) NSString *currentElement;
@property (copy) NSString *currentTitle;
@property (copy) NSDate *currentDate;
@property (copy) NSString *currentSummary;
@property (copy) NSURL *currentLink;

@end

@implementation SubWebView

@synthesize currentElement;
@synthesize currentTitle;
@synthesize currentDate;
@synthesize currentSummary;
@synthesize currentLink;

@end

// Then to access these properties

subwebview.currentDate = [NSDate date];
// etc...
person kubi    schedule 09.02.2010

Позвоните viewController2 через viewController1

Поместите этот код в ViewController1.m

//////****************///////

viewController2=[[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
viewController2.string2=@"ABC";

//////****************///////

Убедитесь, что string2 должен быть определен в файле ViewController2.h

person IPhoneCrazy    schedule 09.02.2010