私はiOS/Objective Cでコーディングしており、テーブルビューにデータを入力するインスタンスがあり、行がタップされると詳細ビューコントローラーがロードされます。didSelectRowAtIndexPath メソッドで、詳細ビュー コントローラーに渡されるパラメーターを設定し、次にそのビュー コントローラーのビューを設定します。
コード:
newsArticleText = [[newsArray objectAtIndex:indexPath.row] objectForKey:@"article"];
prepareForSegue メソッドでは:
NewsDetailController *newsDetailController = [segue destinationViewController];
newsDetailController.articleText = newsArticleText;
詳細 ViewController のヘッダー ファイル:
@interface NewsDetailController : UIViewController {
NSString *articleText;
}
@property (nonatomic,copy) NSString *articleText;
詳細 ViewController の実装ファイルで、パラメーターの値を設定します。
(NewsView*)self.view).nArticleText = articleText;
最後に、親が詳細 ViewController であるビューで:
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString: nArticleText];
CFAttributedStringSetAttribute((__bridge CFMutableAttributedStringRef) attrString, CFRangeMake(0, attrString.length), kCTFontAttributeName, font);
/* Get a framesetter to draw the actual text */
CTFramesetterRef fs = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef) attrString);
CTFrameRef frame = CTFramesetterCreateFrame(fs, CFRangeMake(0, attrString.length), pathToRenderIn, NULL);
データ ソースは JSON 配列です。詳細ビュー コントローラとカスタム ビューをロードするセグエが実行された後、最初のレコード/オブジェクトのみが表示されます。テーブル ビューに戻って 2 番目または 3 番目のレコードを選択すると、値を保持する変数はコンソールに表示されると正しい値になりますが、画面には何も表示されません。
大家さんアドバイスください!-TU