我有一个内置UICollectionViewCell的UITableViewCell。我希望用户能够滚动UICollectionViewCell但是当他点击UITableViewCell内的任何地方时我需要选择它。目前,当用户在UICollectionViewCell之外点击UITableViewCell时,它被正确选中,但当他点击UICollectionViewCell时,没有任何反应。我的想法是在UITableViewCell中实现collectionView:didSelectItemAtIndexPath:方法并以编程方式触发" self selection",但我似乎找不到这样做的方法。如果我存储对表的引用和单元格内部的indexPath,我可能会这样做,但我觉得这样做是不好的方法。如何正确地做到这一点?
答案 0 :(得分:1)
我的猜测是UITableViewCell的didSelectRowAtIndexPath:阻塞了UICollectionViewCell的collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:
我首先检查UITableViewCell的didSelectRowAtIndexPath的断点是否是这种情况:选择UICollectionViewCell。
如果是这种情况,这个答案可能会对你有帮助(也有一个很好的教程):https://stackoverflow.com/a/17120673/5465258
我认为他们遇到了类似的问题。
答案 1 :(得分:0)
嗯,我找到了解决方案,但我不知道它是否是最好的。
首先,我在UITapGestureRecognizer
内的UICollectionView
添加了UITableViewCell
,以覆盖组件的-(void)awakeFromNib
{
...
UITapGestureRecognizer *v_CollectionViewTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClickCollectionView)];
[self.m_CollectionView addGestureRecognizer:v_CollectionViewTap];
...
}
。
UIGestureRecognizer
其次,我创建了一个块属性来保存行的编程选择代码,并创建了一个调用此块的方法,将其设置为先前创建的typedef void (^OnClickTableViewCellBlock)();
@property (nonatomic, copy) OnClickTableViewCellBlock m_OnClickBlock;
的操作。
UITableViewCell
最后,当我在tableView:cellForRowAtIndexPath:
方法中创建tableview:didSelectRowAtIndexPath:
时,我会传递一个调用-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
v_Cell.m_OnClickBlock = ^void()
{
[tableView.delegate tableView:tableView didSelectRowAtIndexPath:indexPath];
};
...
}
的块。
<?php
session_start();
$timeout = 60; // Number of seconds until it times out.
// Check if the timeout field exists.
if(isset($_SESSION['timeout'])) {
// See if the number of seconds since the last
// visit is larger than the timeout period.
$duration = time() - (int)$_SESSION['timeout'];
if($duration > $timeout) {
// Destroy the session and restart it.
session_destroy();
session_start();
}
}
// Update the timeout field with the current time.
$_SESSION['timeout'] = time();
?>