objective-c – 在对象’AddEventViewController’上找不到属性
在Developer Library的帮助下,我正在尝试使用EventKit和EventKitUI框架.我遇到了很早的障碍.我复制并粘贴了
code from the library found here.我在ViewController的导航栏中添加了一个名为’AddEventViewController’的视图控制器,我正在使用此代码调用它.
- (IBAction)add:(id)sender { AddEventViewController *addController = [[AddEventViewController alloc] init]; addController.delegate = self; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:addController]; [self presentViewController:navigationController animated:YES completion: nil]; } 错误显示在行:addController.delegate = self; 此代码直接从库中复制.我正在使用Xcode 4.2和故事板,如果这可能会有所帮助. 更新: #import <UIKit/UIKit.h> @interface AddEventViewController : UIViewController @end 你要告诉我我错误地创建了这个ViewController吗?请解释为什么如果你这么好看就不“如何”? 解决方法
我看到Apple的例子在这里可能会让你感到困惑.首先,下载
iPhoneCoreDataRecipes的完整源代码(或至少在尝试理解此代码时引用它).
要真正了解这里发生了什么,您需要阅读“解雇呈现的视图控制器”一节,然后点击“使用委派与其他控制器通信”链接. (“一个代表团?”很奇怪….) 所以这就是发生了什么.呈现的视图有一个“委托”,它应该告诉“有趣”的东西.在这种情况下,“有趣”的东西是“嘿,我添加了一个食谱!”为了实现这一点,委托实现了一个协议,这意味着它承诺实现一些方法.在这种情况下,所需的方法是recipeAddViewController:didAddRecipe:. AddViewController有一个委托属性,如下所示: @property(nonatomic,assign) id <RecipeAddDelegate> delegate; 这只意味着委托必须符合指定的协议.委托本身表明它在其界面中这样做: @interface RecipeListTableViewController : UITableViewController <RecipeAddDelegate,NSFetchedResultsControllerDelegate> { 请注意,这是因为@Yuras解释的原因而被标记为分配.但是如果您正在编写针对iOS 5的新代码,则应该使用weak而不是assign.如果取消分配引用的对象,则弱属性将自动设置为nil.这样更安全.没有悬空指针. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |