Access App从其他.xib文件委派信息

时间:2012-02-10 16:09:59

标签: iphone ios delegates xib

我有一个带有App Delegate的.xib文件。在这个App Delegate中,我有一些变量实例:

//The model objects
NSString* _stringWord;
NSMutableArray *_images;
int _numberOfWordsTotal;
int _numberOfWords;

它们被方便地声明为属性:

@property (nonatomic, copy) NSString * stringWord;
@property (nonatomic) int numberOfWordsTotal;
@property (nonatomic) int numberOfWords;
@property (nonatomic, copy) NSMutableArray * images;

并在.m文件中合成

@synthesize stringWord = _stringWord;
@synthesize images = _images;
@synthesize numberOfWordsTotal = _numberOfWordsTotal;
@synthesize numberOfWords = _numberOfWords;

在App Delegate中,我确实对这些变量执行了一些操作。更具体地说,我将一些图像分配给_images变量。根据调试器,信息被正确存储。

在另一个.xib文件中,我想访问此委托的内容。所以我的想法是通过使用这个函数来访问整个委托:

Visual_PoetryAppDelegate *delegate = [[UIApplication sharedApplication] delegate];

我可以看到委托变量被实例化,包括访问所有变量。但是,在处理它们时,变量是空的(前一个.xib中生成的值似乎没有存储)。

有任何想法或建议吗?有没有更好的方法从不同的.xib文件访问以前的委托?

2 个答案:

答案 0 :(得分:3)

app委托不是全局变量的中央存储位置。将此数据移动到单个模型对象中(通过它的外观,它将类似于Poem)。您可以从任何需要它的对象访问[Poem sharedPoem]。或者,您可以在应用程序委托中实例化单个Poem对象,并将其交给需要它的各种视图控制器。每种方法都有其优点。

有关正确使用app委托和模型对象的更多讨论,请参阅以下问题:

答案 1 :(得分:1)

更改副本以保留

@property (nonatomic, retain) NSString * stringWord;
@property (nonatomic) int numberOfWordsTotal;
@property (nonatomic) int numberOfWords;
@property (nonatomic, retain) NSMutableArray * images;