0

あるViewControllerのUITextViewから別のViewControllerのUITextViewにデータを渡そうとしています。私のアプリケーションはストーリーボードを使用しています。

最初のビューコントローラーで私は言います:

- (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は適切なテキストを出力します

2番目のViewControllerで、次のインターフェイスを宣言します。

@class SongDoc;

@interface LyricKaraokeViewController : UIViewController

@property (nonatomic, retain) SongDoc * detailItem;

@end

そしてこの実装(簡単にするためにviewDidLoadを示しているだけです):

 - (void)viewDidLoad
 {

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

    [super viewDidLoad];
 } 

そして、SongDocオブジェクトを渡しており、直前にprepareForSegueにSongDocsの内容を出力しているため、detailItemにプロパティdata.lyricsがあることを確認します。

私の問題は、2番目のビューコントローラーで、詳細アイテムがプロパティの歌詞を宣言していないというエラーを受け取っていることです。

しかし、私はこれが真実ではないことを知っているのに、なぜこれが起こっているのですか?

どんな助けでも大いに感謝します:)

4

1 に答える 1

1
@class SongDoc;

クラスであるコンパイラに通知するだけでSongDoc、実装ファイルは読み取りません。必ず

#import "SongDoc.h"

代わりに、コンパイラがクラスによって宣言されているプロパティを認識できるようにします。

于 2012-11-11T11:04:58.710 に答える