gpt4 book ai didi

ios - Split View中的 Collection View Controller 不更新

转载 作者:行者123 更新时间:2023-11-29 13:26:06 27 4
gpt4 key购买 nike

我使用主从应用程序模板创建了一个项目。该项目同时针对 iphone 和 iPad。

我的主视图包含一个从数据库数据填充的 TableView Controller 。到目前为止没有问题。

在详细 View 中,我用 Collection View Controller 替换了默认 View Controller 。我希望主 TableView 中的每一行都在 Collection View 中创建多个单元格。

现在在 Storyboard中,iphone 版本在表和集合(主/细节) Controller 之间有一个 segue,一切正常。

MasterViewController.m    
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
Inbound *current = inbounds[indexPath.row];
[[segue destinationViewController] setDetailItem:current];
}
}

我的自定义对象“Inbound”正在从主视图传递到详细 View 。发生这种情况时,细节/ Collection View Controller 会更新单元格。

DetailViewController.m
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
//Go round the DB and update the cells
}

我的问题出在 iPad 版本的 Split View中。在 Storyboard 中,主视图和详细 View 之间存在关系而不是 segue。当我选择表格行时执行的唯一代码是:

MasterViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
Inbound *current = inbounds[indexPath.row];
self.detailCollectionViewController.detailItem = current;

NSLog(@"%@",@"table cell clicked");
}
}

我可以看到我的自定义“入站”对象已正确传递到详细 View Controller 。但由于某种原因, Collection View 没有更新。

有什么想法吗?

最佳答案

在 iPhone 版本上,新 View 被推送到屏幕上,因此您的方法之一是根据 detailItem 初始化 View 。

在 iPad 中,详细 View 已经显示在屏幕上。您需要确保详细 View 的 setter 函数将重新加载 Collection View 的数据 - 我敢打赌您现在不会这样做......

换句话说,你需要这样的东西(假设是ARC)

- (void)setDetailItem:(Inbound *)detailItem
{
_detailItem = detailItem;
[_collectionView reloadData];
}

蒂姆

关于ios - Split View中的 Collection View Controller 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13081881/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com