我的问题很简单。我有一个包含UICollectionView的UIViewController。在初始化单元格时,我向每个单元格添加了一个手势识别器,以便在按住时可以使用选择器调用一个函数。
然后,此函数创建一个我要呈现的UIAlertController。(基本上,您拥有一个单元格,它询问您是否要删除它,如果您说是,它会从CollectionView中删除它)
问题是我无法从UICollectionView中显示UIAlertController,因为它不是ViewController。
我想以编程方式从UICollectionView实现内部的函数中获取包含UICollectionView的UIViewController,以显示此警报。
我通过在自定义协议中制定协议来完成此任务UICollectionViewCell
,并将这些事件委托给UIViewController
,就像这样
在你的MyCollectionViewCell
protocol MyCollectionViewCellDelegate: class {
func didLongPressCell()
}
class MyCollectionViewCell:UICollectionViewCell {
weak var delegate:MyCollectionViewCellDelegate?
func longPressAction() {
if let del = self.delegate {
del.didLongPressCell
}
}
}
然后回到你的MyViewController
class MyViewController:UIViewController, MyCollectionViewCellDelegate {
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! MyCollectionViewCell
cell.delegate = self
return cell
}
func didLongPressCell() {
// do what you want with the event from the cell here
}
}
要记住的重要位是为每个单元格设置委托
cell.delegate = self
并在您要在其中接收事件的视图控制器中采用新协议
class MyViewController:UIViewController, MyCollectionViewCellDelegate
我还没有测试过这段代码,也不确定在这样的每个单元格中存储对viewController的引用的最佳实践,但是我做的非常相似,请告诉我您的情况。
编辑: 如果您已经将您的子类化,UICollectionView
则将其传递给视图控制器一个引用,以便您可以像这样使用它。
您MyViewController
现在看起来像这样
class MyViewController:UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let collectionView = MyCollectionView()
collectionView.viewController = self
self.view.addSubview(collectionView)
}
}
还有您的自定义收藏夹视图MyCollectionView
class MyCollectionView:UICollectionView, MyCollectionViewCellDelegate {
weak var viewController:UIViewController?
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! MyCollectionViewCell
cell.delegate = self
return cell
}
func didLongPressCell() {
if let vc = self.viewController {
// make use of the reference to the view controller here
}
}
}
该UICollectionViewCell
会和以前一样
我正在尝试访问在“MyClass”的@RequestMapping父级中定义的@PathVariables。简化的screnario: 此类是某种产品的基类,不应进行编辑。因此,我扩展了“父类”。在“MyClass”中,我想做如下操作: 我认为这是允许的(还没有测试),但我不知道如何获得所有已经用“ParentClass”定义的PathVariable。 非常感谢您的任何想法/RTFM参考。
问题内容: 好的,我有一个页面,在此页面上有一个iframe。我需要做的是在iframe页面上,找出主页的URL。 我进行了搜索,我知道如果我的iframe页面位于其他域上是不可能的,因为这是跨站点脚本。但是,我读过的所有内容都说,如果iframe页面与父页面位于同一域中,那么例如,它应该可以工作: …或其他类似的组合,因为似乎有多种获取相同信息的方法。 无论如何,这就是问题所在。我的iframe
怎么可以让这个 self.logger 属于子类(不是直接添加到子类属性这种方式),并且可以运行
问题内容: 问题:如何在子项中显示父变量?预期结果将回显“父母bb” 问题答案: 该变量是继承的并且不是私有的,因此它是当前对象的一部分。 以下是其他信息,可应您的要求提供有关使用的更多信息: 当您要向父类的方法 添加其他 功能时使用。例如,想象一个类: 现在,假设我们要创建一种同时具有导航器的新型飞机。您可以扩展__construct()方法以添加新功能,但仍可以使用父级提供的功能: 这样,您可
问题内容: 就像是 这是我想象的格式,但事实并非如此。什么会退回到对象的父级? 问题答案: JavaScript本身不提供此功能。而且我怀疑您是否可以创建这种类型的功能。例如: 鲍比属于谁?
问题内容: 我有一个可以打电话的页面。在此页面中,我有一个带有提交表单的表单,除此之外,我还有一个ID为“ target”的div。是否可以在iframe中提交表单,并在成功刷新后刷新目标div。是说要在其中加载新页面? 编辑:目标div在父页面中,所以我的问题基本上是,是否可以在iframe之外向父对象进行jQuery调用的示例。那看起来如何? 编辑2:这就是我的jquery代码现在的样子。它位