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;