iPad のマスター/詳細レイアウトをシミュレートするプロジェクトを書いています。だから、masterView(UITableView)、detailView(UICollectionView)、グローバル ナビゲーション バー、TabBar があります。タブバーには、選択する必要があるいくつかのカテゴリが表示され、選択したタブバー項目に従ってマスタービューが表示されます。
ランドスケープ モードでは、マスター ビューと詳細ビューの両方が表示されている場合、すべて正常に機能します。ポートレート モードでは、マスター ビューが非表示になり、マスターを含む popupcontroller を開くボタンがあります。問題は、このポップアップが masterview コンテンツに加えられた変更を表示していないように見えることです
MasterView は UITableViewController です。デリゲートとデータソース メソッドを正しく実装しました。
ポップオーバーを開く/閉じるコードは次のとおりです
if(myPopIsVisible)
{
myPop = [[UIPopoverController alloc]initWithContentViewController:myMasterView];
[myPop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
myPopIsVisible = YES;
}
else
{
[myPop dismissPopoverAnimated:YES];
myPopIsVisible = NO;
}
デバッグでチェックすると、myMasterView の正しい内容 (行の数と内容) が表示されますが、アプリによって最初に読み込まれたもののみが表示されます。
ARCを使用しています...
これは myMasterView クラスの実装です
@implementation myMasterView{
NSArray *cellTitles;
NSArray *cellIco;
NSArray *cellTag;
}
- (void) setData:(NSArray *)titles :(NSArray *)icos :(NSArray *)tags
{
cellTitles = titles;
cellIco = icos;
cellTag = tags;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if(cell == nil){
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
// Configure the cell...
cell.textLabel.text = [cellTitles objectAtIndex:indexPath.row];
cell.tag = [[cellTag objectAtIndex:indexPath.row] integerValue];
#warning icona non impostata
// cell.imageView.image = [cellIco objectAtIndex:indexPath.row];
}
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [cellTitles count];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(isPopover)
{
isPopover = NO;
[master dismissPopoverController];
}
}