无法使用prepareForSegue传递数据:

时间:2012-11-11 10:59:48

标签: objective-c uistoryboard

我正在尝试将数据从一个视图控制器中的UITextView传递到另一个视图控制器中的UITextView。我的应用程序使用的是Storyboard。

在第一个视图控制器中我说:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
LyricKaraokeViewController *karaokeController = segue.destinationViewController;
karaokeController.hidesBottomBarWhenPushed = YES;
SongDoc *song = [[SongDoc alloc] initWithTitle:@"Title" lyrics:@"Test" thumbImage:nil];
karaokeController.detailItem = song;
NSLog(@"%@", karaokeController.detailItem.data.lyrics); 
}

NSLog输出相应的文本

在我的第二个视图控制器中,我声明了这个界面:

@class SongDoc;

@interface LyricKaraokeViewController : UIViewController

@property (nonatomic, retain) SongDoc * detailItem;

@end

和这个实现(为简单起见,只显示viewDidLoad):

 - (void)viewDidLoad
 {

NSLog(@"%@", self.detailItem.data.lyrics);

    [super viewDidLoad];
 } 

我确认detailItem中有属性data.lyrics,因为我们正在传入一个SongDoc对象,并且我刚刚在prepareForSegue中输出了SongDocs内容....

我的问题是在第二个视图控制器中我收到错误,说明详细信息项未声明属性歌词

但我知道这是不真实的,为什么会这样呢?

任何帮助都会非常感谢:)

1 个答案:

答案 0 :(得分:1)

@class SongDoc;

只告诉编译器SongDoc是一个类,但不读取实现文件。你必须

#import "SongDoc.h"

,以便编译器知道类声明了哪些属性。