Как получить доступ к строковой переменной в одном контроллере представления к другому контроллеру представления - PullRequest
3 голосов
/ 09 февраля 2010

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

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

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

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

Я использую Rss Feed Reader и получил данные.

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

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

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

Спасибо.

Ответы [ 5 ]

5 голосов
/ 09 февраля 2010

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

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

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

ParentController *myParentController;

Добавьте @property и @synthesize для него

2 голосов
/ 19 марта 2012

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

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

tmpViewController.myParentController = self;

Добавьте следующее свойство в вашем втором контроллере представления:

FirstViewController *first;

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

0 голосов
/ 09 февраля 2010

Звоните viewController2 в viewController1

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

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

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

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

Убедитесь, что в файле ViewController2.h

определено string2
0 голосов
/ 09 февраля 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...
0 голосов
/ 09 февраля 2010

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

...