IBOutlet没有被设置在didLoad之外

时间:2011-05-06 15:12:11

标签: iphone ipad

我有一个视图控制器,我有一个文本视图。我在另一个类中创建了这个视图控制器的对象,在该类中我设置了IBOutlet textView的文本。 然后我在导航控制器上推动这个视图控制器对象。

但是文本没有设置。我调试它并发现文本视图的对象显示0x0。如果我在didLoad中设置文本然后它被设置。此外,我尝试先推视图然后调用更改文本但仍显示0x0的方法。

如果我做错了什么,有人能告诉我吗?

LookUpReference *lookUp = [[LookUpReference alloc]init];
[self.navigationController pushViewController:lookUp animated:NO];
[lookUp loadViewWithResponse:responseString];

方法loadViewWithResponse: -

-(void) loadViewWithResponse:(NSString *)responseString
{
    txtViewDescription.text=responseString;
}

3 个答案:

答案 0 :(得分:1)

Viewcontrollers懒洋洋地加载视图。因此,当您设置属性txtViewDescription.text = responseString;时,实际上是将responseString分配给nil的变量。所以,如果你想做类似的事情,你可以使用类型NSString创建一个新属性,并将值赋给此实例变量。而不是将responseString分配给textview,而是将其分配给该变量,并在viewDidLoad或您正在使用的任何选择器中获取该值。

答案 1 :(得分:0)

在引用视图ivar时,懒惰地加载XIB文件,因此在此之前你的txtViewDescription为null。尝试访问视图成员以使视图控制器加载它。

答案 2 :(得分:0)

正如@DavidNeiss所说,您需要访问该视图。尝试:

self.view = self.view; // Causes the view to load

此表格不会引起任何警告。