Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何从带有占位符的NIB加载UIViewController?_Iphone_Cocoa Touch_Interface Builder - Fatal编程技术网

Iphone 如何从带有占位符的NIB加载UIViewController?

Iphone 如何从带有占位符的NIB加载UIViewController?,iphone,cocoa-touch,interface-builder,Iphone,Cocoa Touch,Interface Builder,我有一个UIViewController,我想从其中定义了代理(占位符)对象的NIB加载它。第一次加载它时,我会经历这个繁琐的过程: MyViewController *screen = [[MyViewController alloc] init]; NSDictionary *proxyDict = [NSDictionary dictionaryWithObject:myObject forKey:@"MyProxy"]; NSDictionary *optionsDict = [NSD

我有一个UIViewController,我想从其中定义了代理(占位符)对象的NIB加载它。第一次加载它时,我会经历这个繁琐的过程:

MyViewController *screen = [[MyViewController alloc] init];

NSDictionary *proxyDict = [NSDictionary dictionaryWithObject:myObject forKey:@"MyProxy"];
NSDictionary *optionsDict = [NSDictionary dictionaryWithObject:proxyDict forKey:UINibExternalObjects];
[[NSBundle mainBundle] loadNibNamed:@"MyViewController" owner:screen options:optionsDict];
因此,这将在NIB文件中设置声明为“MyProxy”的代理对象,以指向已经存在的对象
myObject
。这很管用

现在,如果我转到另一个屏幕并触发低内存警告,它将卸载视图。当我返回到该屏幕时,它会自动重新加载视图,该视图没有空间放置用于设置代理对象的手动定义的选项字典,然后它在试图找到要链接“MyProxy”的对象时崩溃


如何实现这一点?

如何在-loadView或-viewDidLoad中设置代理对象。每次加载/重新加载视图时(以及-viewDidUnload,在内存不足后)都会调用它们。

从未找到解决方案,提交了功能请求,也没有回音。

对象必须在NIB文件中,因为有iActions链接到它。从文档:“如果为nibName参数指定nil,并且不重写自定义子类中的loadView方法,则默认的视图控制器行为是查找名称(不带.nib扩展名)与视图控制器类名称匹配的nib文件“我猜你要做的唯一方法就是实现-loadView并自己加载nib。你会认为既然interface builder支持代理对象,如果你想让UIViewController自动加载你的nib,它将无法使用你的代理对象,因为它不知道它们。UIViewController确实为您提供了手动加载nib的机会,因此您必须这样做。您最初手动加载nib,但在后续重新加载时不会这样做。是的,我知道所有这些。这正是我试图解决的问题,谢谢。那么我们应该远离自定义代理对象吗?嗯,我解决这个问题的方法是根本没有视图控制器,让自定义代理对象充当视图的所有者