Во-первых, создать свойство в классе RootViewController для переменной массива. Так, например, если ваша переменная массив называется туАггау ваш код может выглядеть примерно так:
В RootViewController.h:
#import <UIKit/UIKit.h>
@interface RootViewController : UITableViewController {
NSArray *myArray;
}
@property (nonatomic, retain) NSArray *myArray;
@end
и добавьте соответствующую строку в @synthesize RootViewController.m:
#import "RootViewController.h"
@implementation RootViewController
@synthesize myArray;
// methods here
@end
Теперь вы можете установить член myArray объекта RootViewController следующим образом:
myRootViewController.myArray = [NSArray arrayWithObjects:@"foo", @"bar", nil];
Теперь в классе делегата приложения вы можете использовать свойство viewControllers self.navigationController для возврата контроллеров представления в стек навигационной панели. Корневой контроллер всегда будет иметь индекс 0. viewControllers возвратит NSArray, элементы которого имеют тип NSObject, поэтому вам нужно также направить указатель RootViewController. Здесь в две строках, чтобы сделать бросок явным:
// get a pointer to the root view controller
id obj = [self.navigationController.viewControllers objectAtIndex:0];
// cast it to a RootViewController pointer
RootViewController* rvc = (RootViewController*)obj;
// Now you can set the array
rvc.myArray = someArray;
(Для того, чтобы использовать имя класса RootViewController в вашем приложении класса делегата вам необходимо импортировать соответствующий файл заголовок - это поместить в верхнем TableViewAppDelegate.м:
#import "RootViewController.h"
И все!
p.s. Имейте в виду, что объявление вашего свойства myArray как типа (неатомное, сохранение) означает, что ваш объект RootViewController в конечном итоге укажет на тот же экземпляр NSArray, который вы передадите ему. Так, например:
NSMutableArray *array = [NSMutableArray arrayWithObjects: @"foo", @"bar", nil];
myRootViewController.myArray = array;
[array removeAllObjects]; // myRootViewController.myArray is now empty!
Вы можете использовать (неатомической, копия) вместо этого, в этом случае ваш объект RootViewController сделает копию массива вы передаете в и сохранить, что вместо этого. Изменения в массиве после присвоения его объекту RootViewController не повлияют на копию.
Почему бы просто не настроить массив в RootViewController? – Felixs
Я мог бы. Но прежде чем дойти до этого, можете ли вы сказать мне, возможно ли то, что я пытаюсь сделать? И если нет, то почему? :) – ericbae
Не все это точно, как тэг [google-app-engine] нашел свой путь к этому вопросу. Соответственно. – BoltClock