我正在尝试将数据从一个视图控制器中的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内容....
我的问题是在第二个视图控制器中我收到错误,说明详细信息项未声明属性歌词
但我知道这是不真实的,为什么会这样呢?
任何帮助都会非常感谢:)
答案 0 :(得分:1)
@class SongDoc;
只告诉编译器SongDoc
是一个类,但不读取实现文件。你必须
#import "SongDoc.h"
,以便编译器知道类声明了哪些属性。