addSubviewで繰り返し、viewDidLoadが呼ばれる
Objective-Cになります。
AppDelegate.mには処理として以下を用意してあります。
イメージとしてはタブで画面切り替えでき、その画面はUISplitViewController
となっています。
_tabAViewController = [[AViewController alloc]initmake];
_tabBViewController = [[BViewController alloc]initmake];
baseViewController.viewControllers = @[_tabAViewController, _tabBViewController ];①
AViewController
、BViewController
クラスではCommonSplitViewController
クラスを継承しており、
CommonSplitViewController
クラスはUISplitViewController
を継承しています。
また、baseViewController
はUITabBarController
を継承したクラスです。
AViewController
、BViewController
クラスでは以下を用意しています。
- (id)initmake
{
listView = [[ListView alloc]init];
listView.showView = self.view;②
return [self init]; // 12/3追記
}
- (void)viewDidLoad
{
[super viewDidLoad];③
~~
}
CommonSplitViewController
クラス処理として以下を用意しています。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// 区分線を追加
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(300, 0, 1, 600)];
[self.view addSubview:lineView];④
}
①を実施すると、②が呼ばれ、その後③がよばれます。
③から継承元のCommonSplitViewController
クラスのviewDidLoad
が実施されるのは
理解できるのですが、さらに④→③→④…が繰り返されてしまいます。
④の処理でなぜ③が呼ばれるのでしょうか?
また、②実行で③が呼ばれることもいまいち理解できていません…
ListView
のクラスですがBaseTableView
クラスを継承しています。
BaseTableViewはUITableView
を継承したクラスになっております。
@interface ListView : BaseTableView <UITableViewDelegate, UITableViewDataSource> {
}
@property (nonatomic) UIView *showView;