使用segue传回数据时卡住了

时间:2013-04-30 12:58:05

标签: iphone ios objective-c

我正在尝试使用协议使用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'类型的对象上找不到属性'委托',但我确实将其添加为属性并合成它...

1 个答案:

答案 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;
  }