我正在尝试使用协议使用segue传回数据。我正在按照这个答案:How to Pass information Back in iOS when reversing a Segue?
所以我已经做了:
PageScrollViewController.h
@protocol MyDataDelegate <NSObject, UIPageViewControllerDelegate>
- (void)recieveData:(NSString *)theData;
@end
我还添加了属性:
@property (nonatomic,weak) id<MyDataDelegate> delegate;
ContainerViewController.h
#import "PageScrollViewController.h"
@interface ContainerViewController : UIViewController <MyDataDelegate>
//...
ContainerViewController.m
- (void)recieveData:(NSString *)theData {
//Do something with data here
}
在这里我被困住了:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
//Get a handle on the view controller about be presented
PageScrollViewController *secondViewController = segue.destinationViewController;
if ([PageScrollViewController isKindOfClass:[PageScrollViewController class]]) {
PageScrollViewController.delegate = self;
}
}
行PageScrollViewController.delegate = self;
给出错误:在'PageScrollViewController'类型的对象上找不到属性'委托',但我确实将其添加为属性并合成它...
答案 0 :(得分:5)
您尝试在Class
类型的对象(在本例中为[PageScrollViewController setDelegate:]
)上调用实例方法(PageScrollViewController
)。
试试这个:
替换
PageScrollViewController *secondViewController = segue.destinationViewController;
if ([PageScrollViewController isKindOfClass:[PageScrollViewController class]]) {
PageScrollViewController.delegate = self;
}
使用
PageScrollViewController *secondViewController = segue.destinationViewController;
if ([secondViewController isKindOfClass:[PageScrollViewController class]]) {
secondViewController.delegate = self;
}