レイジーローディングはUITabBarControllerタスクではありません。代わりに、あなたのタブに関連付けられているviewControllerの責任があります。
各UIViewControllerに関連付けられたUIViewを解放するには、TabBarItemを変更するたびに、UITabBarControllerに関連付けられた各UIViewControllerサブクラスに次のメソッドを実装する必要があります。viewControllersプロパティ:
-(void)viewDidDisappear {
[self.view removeFromSuperview];
self.view = nil;
}
明らかに、これはあなたのUIViewControllerに関連付けられているself.viewを削除します。ただし、コードが十分にスマートな場合、関連するすべてのオブジェクトが削除されます。 たとえば、あなたloadViewメソッドは次の通りであることとします。これは、contentViewとそのメモリresponsabilities内のすべてのオブジェクトは、contentViewに要求されていることがself.viewプロパティにリリースされ、装着されていることを意味
-(void)loadView {
UIView *contentVew = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = contentView;
…
...
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,320,50)];
…
…
[contentView addSubview:aLabel];
[aLabel release];
…
[contentView release];
}
。
このシナリオでは、すべてのオブジェクトのドミノスタイルの解放をもたらすself.view(これはcontentViewへの参照です)を削除することが目標です。
敬具
私は現在、これはタブバーで、非アクティブのビューコントローラをアンロードするために使用してい
しかし、uitabbarcontrollerを再作成する方法を知っていました。これは私自身のタブバーを管理するために必要なことです。たぶん私は試してみることができます.. – mk12
それは全く難しくない、あなたはちょうど1つのメソッドを実装する必要がありますselectItemをし、選択した項目に応じて、非常にまっすぐ前方に設定し、怠惰な読み込み方法を行うことができます – Daniel
そうです私は自分自身のuiviewcontrollerクラスを作成して、読み込みを遅延させ、タブバーを使うか、UITabBarControllerを使うべきだと言っていますか? didSelectItemメソッドを試しましたが、正しく動作するようにはできませんでした。 – mk12