选择第一行时,数据未加载到详细视图控制器

时间:2011-04-17 22:41:59

标签: objective-c ios subview

当我启动有问题的应用程序时,我从派生自plist的数组中加载一个表。在didSelectRowAtIndexPath中,我将数组中的值分配给详细视图控制器中的子视图,然后将详细视图控制器推送到堆栈,但在运行应用程序时,第一次我从表中选择任何行,数组中的数据不会出现在我的详细视图控制器的子视图/字段中。然后我单击返回表视图,重新选择行,然后在详细视图控制器中加载数据。

在表视图中,控制器didSelectRowAtIndexPath方法我执行以下操作,其中xLabel是推送视图控制器的xib中的UILabel子视图:

self.detailViewController.xLabel.text = [[[xArray objectAtIndex: indexPath.section] objectForKey:@"xDesc"] objectAtIndex:indexPath.row];

在第一次选择行时,我需要做什么才能显示数据?

2 个答案:

答案 0 :(得分:1)

我认为这不起作用,因为第一次选择行时,您的详细视图控制器不在内存堆栈中,因此您无法在先前的视图控制器中调用标签的setText方法。第二次它的工作,因为它在内存中,所以你可以调用set方法到它的组件。我想说的是,当您在堆栈中推送详细视图控制器时,只需在此处设置一个详细视图控制器的字符串(此字符串应该是详细视图控制器的属性)然后在详细视图中控制器的viewDidLoad方法设置标签的文本到这个字符串。

答案 1 :(得分:0)

如果我理解正确,第一次没有xLabel对象,因为它将在UIViewController被“加载”时创建。因此,当您尝试设置文本值时,它不会加载到标签中,因为没有标签。随后的尝试将在第一次尝试时创建标签。无论如何,如果你需要与详细信息视图共享一些数据,那么将其存储在字典或其他对象中,而不是直接从当前控制器将其分配给视图。