iPhone:模态视图控制器的代表
Posted
技术标签:
【中文标题】iPhone:模态视图控制器的代表【英文标题】:iPhone: delegate of ModalViewController 【发布时间】:2010-09-23 08:07:35 【问题描述】:我遇到了一个问题,即为模态显示的 ViewController 设置委托属性。下面的代码是 Presenting a View Controller Modally 示例代码的修改副本。
AddContactPersonTableViewController *addController = [[AddContactPersonTableViewController alloc] initWithNibName:@"AddContactPersonTableViewController" bundle:nil];
addController.delegate = self;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[addController release];
对于addController.delegate = self;
,出现错误:“在非结构或联合的情况下请求成员'代表'”
我不知道如何解决这个问题。也许你可以解决它;)
【问题讨论】:
【参考方案1】:您的 AddContactPersonTableViewController.h 看起来像这样。您是否将委托协议添加到此类?你需要设置委托吗?如果您不需要以前的视图控制器在新的视图控制器被解除或类似的事情时执行某些操作,您甚至可能不需要这样做..
【讨论】:
我想,我需要这个属性。关闭 ModalViewController 后,输入的数据应存储在数组中(前一个视图控制器的实例属性)。 是的,如果是这样,您应该使用委托。【参考方案2】:AddContactPersonTableViewController 必须在您的 .h 文件中声明一个名为 delegate 的属性,例如:
id 委托人;
委托还应该有一个有效的设置器: @property (nonatomic, retain) id delegate;
【讨论】:
哦.. 我忘了声明一个名为 delegate 的属性。 好吧,委托的属性通常定义为 (nonatomic, assign),而不是 (nonatomic, retain)。不应保留代表。以上是关于iPhone:模态视图控制器的代表的主要内容,如果未能解决你的问题,请参考以下文章
如何关闭模态视图控制器,然后立即让呈现视图控制器呈现不同的模态视图控制器?