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:模态视图控制器的代表的主要内容,如果未能解决你的问题,请参考以下文章

从模态视图控制器中更改模态视图大小

如何关闭模态视图控制器,然后立即让呈现视图控制器呈现不同的模态视图控制器?

关闭当前的模态视图控制器,然后呈现新的模态视图控制器

如何从模态视图控制器调用呈现视图控制器的方法

模态视图的 iPad 问题:创建视图控制器后模态视图标签为空

将视图控制器推入模态视图控制器视图