同様の質問をすべて読み、すべての提案を試しましたが、まだ何もありません。誰かが私の欠点を見つけてくれるかもしれません。
私のView Controllerは、2つのボタンのいずれかによって、別のView Controllerから開始されます。ボタン タップは NSNotification を (アタッチされた配列と共に) 送信し、このビュー コントローラーはこの通知を予期してから、このメソッドを呼び出します。
- (void)addContentToArray:(NSNotification *)aNotification {
array = [NSArray arrayWithArray:[aNotification object]];
([array count] == 6) ? (category = YES) : (category = NO);
[myTableView reloadData];
NSLog(@"%d", [array count]);
NSLog(@"%@", myTableView);
}
メソッドは毎回呼び出されます。配列数を変更することでわかります。ここで、通知オブジェクトは前のビュー コントローラーから渡された配列であり、これらのオブジェクトをローカル配列プロパティに割り当てます。これが私の UITableView ソースです。だから私がしていることは、 UITableView を再利用して、渡された配列の要素を表示しようとすることです。そして、最初に渡された配列 (最初に渡された方) に対してうまく機能します。
2 番目のボタンをタップすると、新しい配列が正常に渡されます (前述のように、異なる [配列カウント] のログから、異なる配列の 3 対 6 オブジェクトであることがわかります)。ただし、起こっていないのは、UITableView が更新されないことです (テーブル内の行を選択したときに渡された値は、間違った値が表示されていても、正しい配列からのものです)。
UITableView データ ソース メソッドは次のとおりです。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Identifier"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Identifier"];
}
cell.textLabel.text = [[array objectAtIndex:indexPath.row] objectForKey:@"name"];
if (category) {
cell.detailTextLabel.text = [[array objectAtIndex:indexPath.row] objectForKey:@"description"];
}
return cell;
}
それで、私は何を間違っていますか?
役立つ可能性があるその他の考慮事項:
- NSLog(@"%@", myTableView); (null) を返しますが、これは少し心配です。ここの myTableView は、ビュー コントローラーに正しく接続され、プロパティとして宣言され、合成された、私の nib ファイルからの UITableView です。
- 問題のView ControllerはPKRevealControllerのrightViewControllerなので、繰り返し呼び出されるとviewWillAppearメソッドが呼び出されますが、viewDidLoadは呼び出されません(ただし、前述のとおり、addContentToArray:メソッドも毎回呼び出されています)
- また、PKRevealController にある程度慣れている人のために、View Controller から focusdController をログに記録しようとすると、frontViewController (View Controller を表示するために移動するもの) がフォーカスされていると表示されます。それが myTableView が (null) である理由でしょうか?
洞察と助けに感謝します!