UITableView/s と UILabel/s がほとんどないビューがあります。プログラムで作成しています(つまり、NIBを使用していません)。
署名付きのメソッドで tableView とラベルの作成を統合しました。
- (void) CreateTableView:(UITableView*) outTableView andLabel:(UILabel*)OutLabel AtFrame:(CGRect) frame{
CGRect labelFrame = frame;
labelFrame.origin.x = LABEL_LEFT_ALIGNMENT;
labelFrame.origin.y -= LABEL_TOP_ALIGNMENT;
labelFrame.size.height = LABEL_HEIGHT;
outLabel = [[UILabel alloc] initWithFrame:labelFrame];
[[self view] addSubview:outLabel];
outTableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStyleGrouped];
[outTableView setDataSource:self];
[outTableView setDelegate:self];
[[self view] addSubview:outTableView];
}
ここで、outTableView と outLabel は出力パラメーターです。つまり、メソッドの完了後、呼び出し元は outTableView と outLabel を使用します。
私のアプリには、tableView1、tableView2、tableView3 の 3 つの tableview インスタンス変数があります。そして 3 つのラベル インスタンス変数。次のようなコントローラー (呼び出し元) 呼び出しを表示します。
[self CreateTableView:tableView1 andLabel:label1 AtFrame:frame1];
[self CreateTableView:tableView2 andLabel:label2 AtFrame:frame2];
[self CreateTableView:tableView3 andLabel:label3 AtFrame:frame3];
このメソッドが完了すると、UILabel* が画面にレンダリングされ、呼び出し元は UILabel* オブジェクトを使用できるようになります。奇妙なことに、それは UITableView* オブジェクトには当てはまりません。
任意のアイデア、なぜ異なる動作があるのですか?
注: 私のアプリケーションは ARC 対応です。