- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 UITableView,在 tableViewCell 里面我有一个 UICollectionView。
我的要求是在点击第一个 tableView 单元格的按钮时我必须为第二个 tableViewCell 设置动画。
下面是我的代码:-
//Cell For Row at indexPath
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if (0 == indexPath.section) {
let cell = tableView.dequeueReusableCell(withIdentifier: "FirstRowCell") as! FirstRowCell
cell.btnReview.addTarget(self, action: #selector(GotoReview), for: UIControlEvents.touchUpInside)
cell.btnMyProduct.addTarget(self, action: #selector(AnimateCollectionView), for: UIControlEvents.touchUpInside)
//cell.
return cell
} else if ( 1 == indexPath.section) {
let identifier = "TableCollectionCell"
var tableCollectionCell = tableView.dequeueReusableCell(withIdentifier: identifier) as? TableCollectionCell
if(tableCollectionCell == nil) {
let nib:Array = Bundle.main.loadNibNamed("TableCollectionCell", owner: self, options: nil)!
tableCollectionCell = nib[0] as? TableCollectionCell
tableCollectionCell?.delegate = self
}
return tableCollectionCell!
} else {
let identifier = "BrandImagesTableCell"
var brandImagesTableCell = tableView.dequeueReusableCell(withIdentifier: identifier)
if(brandImagesTableCell == nil) {
let nib:Array = Bundle.main.loadNibNamed("BrandImagesTableCell", owner: self, options: nil)!
brandImagesTableCell = nib[0] as? BrandImagesTableCell
}
//brandImagesTableCell.
return brandImagesTableCell!
}
}
在我的代码中你可以看到:
if (0 == indexPath.section)
因为我有一个按钮目标 (#selector(AnimateCollectionView)
)。
我想为位于 (1 == indexPath.section
) 的 tableCollectionCell 制作动画。
查看我的AnimateCollectionView
方法:-
func AnimateCollectionView() {
let identifier = "TableCollectionCell"
var tableCollectionCell = tableView.dequeueReusableCell(withIdentifier: identifier) as? TableCollectionCell
if(tableCollectionCell == nil) {
let nib:Array = Bundle.main.loadNibNamed("TableCollectionCell", owner: self, options: nil)!
tableCollectionCell = nib[0] as? TableCollectionCell
tableCollectionCell?.delegate = self
}
tableCollectionCell?.alpha = 0
UIView.animate(withDuration: 1.50, animations: {
//self.view.layoutIfNeeded()
tableCollectionCell?.alpha = 1
})
}
最佳答案
如果你想动画化它的变化,你可以只改变一些状态变量,调用tableView.reloadRows(at:with:)
,然后让您的 cellForRowAt
检查这些状态变量以了解最终的单元格应该是什么样子(即它是“之前”还是“之后”的单元格配置)。
例如,这里有一个示例,有两个单元格,将第二个单元格从红色单元格切换为蓝色单元格。
class ViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "RedCell", bundle: nil), forCellReuseIdentifier: "RedCell")
tableView.register(UINib(nibName: "BlueCell", bundle: nil), forCellReuseIdentifier: "BlueCell")
}
@IBAction func didTapButton(_ sender: UIButton) {
isRedCell = !isRedCell
tableView.reloadRows(at: [IndexPath(row: 1, section: 0)], with: .fade)
}
var isRedCell = true
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "ButtonCell", for: indexPath)
return cell
} else if indexPath.row == 1 {
if isRedCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RedCell", for: indexPath)
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "BlueCell", for: indexPath)
return cell
}
}
fatalError("There are only two rows in this demo")
}
}
现在,假设您真的需要使用 NIB 而不是单元格原型(prototype),我会像上面那样在 tableview 中注册 NIB,而不是让 cellForRow
必须自己手动实例化它们。同样,对于带有按钮的单元格,我只是在 Storyboard中使用了一个原型(prototype)单元格,并将按钮直接连接到我的 @IBOutlet
,完全避免了该单元格的 NIB。
但所有这些都与您手头的主要问题无关:您可以根据需要创建单元格。但希望这能说明基本思想,即在点击按钮时,我不会尝试直接加载任何单元格,但我只是更新一些状态变量,cellForRow
将使用它来了解要加载哪个单元格加载然后告诉 tableView
动画重新加载 IndexPath
。
顺便说一下,我从你的例子中假设第二行的两个不同的潜在单元格需要不同的 Nib 。但如果你不这样做,那就更容易了(只使用一个 NIB 和一个单元格标识符),但想法是一样的,只需更新你的状态变量并重新加载第二行动画。
关于ios - 如何使用 Swift 为 UITableViewCell 设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41285009/
我是 Swift 开发新手,正在学习许多在线教程。这些教程中的大多数都引用了 Xcode 上的旧版本,并且代码会导致错误。谁能解释为什么下面的代码会产生“UITableViewCell”?无法转换为
我在我的单元格中使用 AutoLayout,但是,当单元格内有大文本并且单元格展开时,单元格似乎与下面的单元格重叠。图像显示了这是如何重叠单元格的: UITableViewCell:
我的函数接受类型为 (cell: UITableViewCell, item: AnyObject) -> () 的函数作为参数。 我的问题是,当我尝试将具有 UITableViewCell 的子类
我正在尝试做一些相当简单的事情,但我看不到最好的方法。我有一个带有两个单元格的 uitableview,第一个在 contextview 中有一个 uitextfield,输入 View 设置为 ui
我在使用 Swift 时遇到了一些挑战。 我有一个带有原型(prototype)单元的 UITableView。有3个单元格前两个包含用户填写的文本字段。第三个包含一个提交按钮。 非常简单! 我的问题
我是 Objective C 的新手。我有一个问题。 我使用自定义的tableviewcell。我正确地使用 JSON 列出了数据。 我想将点击的数据传递到新 View 的自定义表格 View 。 所
我有两个单元格,比方说我的应用程序中的单元格 A 和单元格 B。它们都有自己的类,class CellA : UITableViewCell 和 class CellB : UITableViewCe
我有一个 UIViewController,它根据屏幕上的所需选项实例化一些 UITableViewCell。这些选项之一是“说明”,我创建了一个 .XIB 文件来在屏幕上显示说明。但是,在此屏幕上,
我正在尝试创建一个 tableview,其中有一个 uitableviewcell(cell1) 的子类,其中包含一个按钮等。当在 cell1 中单击该按钮时,该按钮应该在其正下方添加和删除 uita
在使用 UITableView 编码时,我遇到了这个我无法理解的错误。我的表格有 3 行,每行设置 50 像素,但第二行除外,我将其设置为 500 像素,它填满整个屏幕。当我向下滚动到底部时,问题出现
UITableViewCell 反射(reflect)两种不同的状态:突出显示和选定。 对我来说,它们听起来相同,那么到底有什么区别? 最佳答案 突出显示发生在触地时。 选定发生在触摸时,然后调用di
我刚刚添加了屏幕截图。它是定制单元吗?正如我所见,“ map ”是右对齐的,“1800”是左对齐的。我该如何创建它? 最佳答案 它确实看起来像一个自定义单元格。因为 UITableViewCell 继
我不太了解 tableview 的整体行为: 我有一个带有我在 Storyboard中定义的动态单元格(reuseIdentifier:单元格)的表格 View 。除此之外,我还有两个使用两个 nib
我有一个带有以下代码的 UITableViewCell,其中用户单击 UITableViewCell 上的“保存”按钮。单元格中的图像已保存,“保存”按钮动画消失,但单元格仍然存在。 -(UIT
我有一个UITableView,每个单元格都包含一个UIImageView 和一个UIButton。点击按钮后我启动相机,我正在尝试更新该单元格索引路径中的 UIImageView 。到目前为止,这是
有谁知道如何在进入编辑模式时从分组的 UITableView 中隐藏多个单元格?当退出编辑模式时,我希望这些行以动画效果隐藏,就像在“联系人”应用程序中看到的那样。 如您所知,在联系人编辑模式下,行数
我在 UITableViewCell 中有一个 subview ,其中包含一个 UILabel 和一个 UIButton。当我按下按钮时,它出于某种原因取消选择 UITableViewCell。 有没
我一直在经历在 UItableViewCell 中设置 UIDatePicker 的过程,当选择其上方的 UITableViewCell 时会显示该 UIDatePicker,然后在选择 UITabl
我必须集成从代码中以编程方式生成的 UITableViewCell,如下所示: UITableViewCell *newCell = [[UITableViewCell alloc] initWith
我现在正在学习 iOS 开发中的 UITableView 类,我想在导航到多个 UITableViewCells 的部分中实现点击一个 UITableViewCell,该附件类型用于复选标记,我应该怎
我是一名优秀的程序员,十分优秀!