ios - 如何在 2 个不同的 UICollectionViewFlowLayout 实例之间切换?
<p><p>这几天一直在努力。我试图让应用程序的客户在购物时在两种显示类型之间切换。 </p>
<p>现在我正在使用 2 个 <code>UICollectionView</code> 和他们自己的自定义 <code>UICollectionViewCell</code> 并且两者之间的切换工作正常,但我发现使用 2 个不同的<code>UICollectionView</code> 正在成为一种痛苦。我为主要 <code>UICollectionView</code> 实现的某些东西在替代 <code>UICollectionView</code> 中无法正常工作。</p>
<p><strong>这就是改变显示的方式。我使用带有自定义方法的 <code>UISegmentedControl</code>:</strong></p>
<p> <img src="/image/heerr.png" alt="enter image description here"/> </p>
<pre><code>- (void)displayTypeSegmentSelected
{
_selectedDisplayTypeIndex = ;
if (_selectedDisplayTypeIndex == 0) {
NSLog(@"Single file item view selected");
_fromCollectionView = _collectionView;
_toCollectionView = _collectionView2;
} else if (_selectedDisplayTypeIndex == 1) {
NSLog(@"Grid style view selected");
_fromCollectionView = _collectionView2;
_toCollectionView = _collectionView;
}
;
];
;
}
</code></pre>
<p><strong>我通过 stackoverflow 获得了两个不同的建议,关于更好的方法来做我想做的事情。</strong></p>
<ol>
<li>使用 2 个 <code>UICollectionViewFlowLayout</code> 并在它们之间切换,而不是 2 个 <code>UICollectionView</code>。</li>
<li>根据选择的段返回适当的自定义 <code>UICollectionViewCell</code>。</li>
</ol>
<p>我觉得第一种方法会更好。我需要将界面构建器 <code>UICollectionViewFlowLayout</code> 设为 IBOutlet,因为连接的 <code>UICollectionView</code> 不是以编程方式创建的。然后我会以编程方式创建第二个 <code>UICollectionViewFlowLayout</code>。 </p>
<p>在我的 displayTypeSegmentSelected 方法中,我将加载两个 <code>UICollectionViewFlowLayout</code> 之一,具体取决于所选的段。</p>
<p><strong>单个文件显示如下所示:</strong></p>
<p> <img src="/image/6FnYY.png" alt="enter image description here"/> </p>
<p><strong>网格样式显示如下所示:</strong></p>
<p> <img src="/image/WRLWe.png" alt="enter image description here"/> </p>
<p><strong>问题:</strong></p>
<p>我认为我有正确的想法来解决我最初的问题以及如何去做。但是,我会从更有经验的开发人员那里提出意见和示例。
你会怎么做?你能给我一个清晰的例子吗?</p>
<p>亲切的问候</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>这就是我最后做的事情。</p>
<p><strong>点击特定的分段控件后,我更改了布局并重新加载了单元格。</strong></p>
<pre><code>- (void)displayTypeSegmentSelected
{
_selectedDisplayTypeIndex = ;
if (_selectedDisplayTypeIndex == 0) {
NSLog(@"Single file item view selected");
;
];
} else if (_selectedDisplayTypeIndex == 1) {
NSLog(@"Grid style view selected");
;
];
}
}
</code></pre>
<p><strong>在我的 <code>cellForItemAtIndexPath</code> 中,根据屏幕上显示的布局,我加载了具有正确设置的特定自定义单元格。</strong></p>
<pre><code>-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object
{
NSLog(@"collectionview 1 loaded");
static NSString *CellIdentifier = @"Cell";
VAGGarmentCell *cell = ;
static NSString *CellIdentifier2 = @"Cell2";
VAGGarmentCell2 *cell2 = ;
if ([ isEqual: _flowLayout]) {
[ startAnimating];
PFFile *userImageFile = ;
[ setFile: userImageFile];
[ loadInBackground];
[ stopAnimating];
[ setText:];
[ setText:]];
return cell;
} else if ([ isEqual: _flowLayout2]) {
[ startAnimating];
PFFile *userImageFile = ;
[ setFile: userImageFile];
[ loadInBackground];
[ stopAnimating];
[ setText:];
[ setText:]];
return cell2;
}
return 0;
//_addToFavouritesButton = ;
;
}
</code></pre>
<p><strong>在我的 viewDidLoad 中,我在这里引用了用于单个项目显示的自定义单元格的 nib 文件。</strong></p>
<pre><code>// Grab cell nib file and give a reuse identifier
forCellWithReuseIdentifier:@"Cell2"];
</code></pre>
<p>我遇到了崩溃,但它们很难复制,尽管每次我在不同的布局之间切换时,我的内存都会不断增加。我猜我需要删除一些旧代码。我明天整理一下,用仪器检查一下。不过这已经完成了,我可以继续前进。</p>
<p>我可能需要重构我重复自己的代码。</p></p>
<p style="font-size: 20px;">关于ios - 如何在 2 个不同的 UICollectionViewFlowLayout 实例之间切换?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/23246022/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/23246022/
</a>
</p>
页:
[1]