0
更新TableViews單元格時,我有一個相當奇怪的行爲。IOS Swift:動畫化TableviewCell更改無法正常工作
來形容最簡單的方法是視頻: https://drive.google.com/open?id=0B67InGf2FEPaODFLUEhLZ29LWTg
在這裏你可以看到,我第一次嘗試展開(或摺疊)來看,該SOR的做一些事情,但不是真的。我想表達的觀點不存在,但它閃爍。
這裏是我的代碼:
class StylingTableViewController: UITableViewController {
//MARK: properties
var articles = [Article]()
override func viewDidLoad() {
super.viewDidLoad()
articles.append(contentsOf: [Article(id: "Artikel 1"), Article(id: "Artikel 2")])
//Let table auto layout in height
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 100
// Use the edit button item provided by the table view controller.
navigationItem.rightBarButtonItem = editButtonItem
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return articles.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Table view cells are reused and should be dequeued using a cell identifier.
let cellIdentifier = "ArticleDetailCell"
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? StylingDetailTableViewCell else {
fatalError("The dequeued cell is not an instance of StylingDetailTableViewCell.")
}
let article = articles[indexPath.row]
cell.articleName.text = article.id
//Scrollview
let width:CGFloat = 90;
var xPos:CGFloat = 0;
var scrollViewContentSize:CGFloat=0;
for _ in 0...10{
let myView:CFPictureView = CFPictureView()
myView.frame.size.width = 80
myView.frame.size.height = 120
myView.frame.origin.x = CGFloat(xPos)
xPos += width
cell.pictures_scrollView.addSubview(myView)
scrollViewContentSize += width
cell.pictures_scrollView.contentSize = CGSize(width: scrollViewContentSize, height: 120)
}
return cell
}
// Override to support editing the table view.
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
// Delete the row from the data source
articles.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
} else if editingStyle == .insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
//MARK: Actions
@IBAction func favButtonPressed(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
@IBAction func expandCell(_ sender: UIButton) {
if let cell = sender.superview?.superview?.superview?.superview?.superview as? StylingDetailTableViewCell {
cell.fieldDescriptorStackView.isHidden = false;
cell.articleBarcode.isHidden = false;
cell.articleCustomerNumber.isHidden = false;
cell.articleStyle.isHidden = false;
cell.expandCellButton.isHidden = true;
cell.collapseCellButton.isHidden = false;
cell.pictures_order.isHidden = false;
cell.pictures_amount.isHidden = false;
cell.pictures_scrollView.isHidden = false;
cell.pictures_title.isHidden = false;
let indexPath = tableView.indexPath(for: cell)
self.tableView.reloadRows(at: [indexPath!], with: UITableViewRowAnimation.automatic)
(self.parent as? StylingViewController)?.topStackView.isHidden = true;
}
}
@IBAction func collapseCell(_ sender: UIButton) {
if let cell = sender.superview?.superview?.superview as? StylingDetailTableViewCell {
cell.fieldDescriptorStackView.isHidden = true;
cell.articleBarcode.isHidden = true;
cell.articleCustomerNumber.isHidden = true;
cell.articleStyle.isHidden = true;
cell.expandCellButton.isHidden = false;
cell.collapseCellButton.isHidden = true;
cell.pictures_order.isHidden = true;
cell.pictures_amount.isHidden = true;
cell.pictures_scrollView.isHidden = true;
cell.pictures_title.isHidden = true;
let indexPath = tableView.indexPath(for: cell)
self.tableView.reloadRows(at: [indexPath!], with: UITableViewRowAnimation.automatic)
(self.parent as? StylingViewController)?.topStackView.isHidden = false;
}
}
func undoAction() {
print("undo")
}
}
好像東西是錯誤的tableView.reloadRows。 幫助將不勝感激
感謝您的答覆,但我已經有tableView.rowHeight = UITableViewAutomaticDimension和tableView.estimatedRowHeight = 100在我viewDidLoad中() – Tterhuelle
你能共享類文件? –
我添加了整個類文件 – Tterhuelle