概要
私はAppleのページコントロールプロジェクトを転用しています。loadScrollViewWithPage:で、スクロールビューに追加しているビューコントローラは、ペン先から直接表示されているかのように、初期化された値なしで画面に表示されます。
詳細
ステップスルーしたときに機能しているように見えるコードは次のとおりです。
CBFullScreenViewController *controller = [viewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null]) {
controller = [[CBFullScreenViewController alloc] init];
// Populate the view from the corresponding CBImage object
CBImage *imageObject = [imageArray objectAtIndex:page];
BOOL bookmarked = [imageObject.bookmarked boolValue];
controller.bookmarkButton.highlighted = bookmarked;
NSString *subtitle = imageObject.subtitle;
controller.closedSubtitleLabel.text = subtitle;
// <-- snip...more initialization --> //
controller.delegate = self;
[viewControllers replaceObjectAtIndex:page withObject:controller];
[controller release];
}
//コントローラーのビューをスクロールビューに追加しますif(nil == controller.view.superview){CGRect frame = scrollView.frame; frame.origin.x =frame.size.width*ページ; frame.origin.y = 0; controller.view.frame=フレーム; [scrollView addSubview:controller.view]; //<<コントローラーとサブビュー}//すべてにnull以外の、この時点で有効と思われる//値があります
CBFullScreenViewControllerのinitメソッドは次のとおりです。
- (id)init {
if ((self = [super initWithNibName:@"CBFullScreenViewController" bundle:nil])) {
self.cover = [[UIImageView alloc] init];
self.homeButton = [[UIButton alloc] init];
self.tabView = [[UIButton alloc] init];
self.closedSubtitleLabel = [[UILabel alloc] init];
self.openSubtitleLabel = [[UILabel alloc] init];
// <-- snip...more initialization --> //
}
return self;
}
過去2時間のトラブルシューティングは、無関係なメモリリークを追跡するのに役立ちましたが、自分のビューに入れている値に何が起こっているのかを一生理解することはできません。
ああ、私は私のアウトレットごとに@synthesizeを持っていて、それらはすべてIBに接続されていることを言及する価値があるでしょう。ここにスクリーンショット。