ios - Swift - 在一个视图中加载不同的视图
问题描述
我正在研究Wishlist-App
一个问题,但我遇到了一个需要解释的问题:
图片便于理解:
我的主页(第一张图片)包含一个CollectionView
用户可以添加项目(“不同的愿望清单”)的地方,它看起来像第二张图片:
目前,用户可以点击“主要愿望清单”,如下所示:
用户可以“添加愿望”(点击底部的 + 按钮),然后将其添加到“主要愿望清单”TableView
中。
代码:
我的“主要愿望清单”——cell
在它自己的自定义类中,用户可以添加的所有其他“愿望清单”(“TestList”、“TestList2”)都是一个类。
TableView
点击“主要愿望清单”后出现的不是cell
另一个ViewController
。Is 只是一个View
让我出现/消失的view.transoform
.
这是我的“WishlistView”(第三张图片):
let wishlistView: UIView = {
let v = UIView()
v.translatesAutoresizingMaskIntoConstraints = false
v.backgroundColor = .darkGray
v.layer.cornerRadius = 30
return v
}()
lazy var theTableView: WhishlistTableViewController = {
let v = WhishlistTableViewController()
v.view.layer.masksToBounds = true
v.view.layer.borderColor = UIColor.white.cgColor
v.view.backgroundColor = .clear
v.view.layer.borderWidth = 7.0
v.view.translatesAutoresizingMaskIntoConstraints = false
return v
}()
let dismissWishlistViewButton: UIButton = {
let v = UIButton()
v.setImage(UIImage(named: "dropdown"), for: .normal)
v.translatesAutoresizingMaskIntoConstraints = false
v.addTarget(self, action: #selector(hideView), for: .touchUpInside)
return v
}()
let menueButton: UIButton = {
let v = UIButton()
v.setImage(UIImage(named: "menueButton"), for: .normal)
v.translatesAutoresizingMaskIntoConstraints = false
v.addTarget(self, action: #selector(menueButtonTapped), for: .touchUpInside)
return v
}()
let wishlistLabel: UILabel = {
let v = UILabel()
v.text = "Main Wishlist"
v.font = UIFont(name: "AvenirNext-Bold", size: 30)
v.textColor = .white
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
let wishCounterLabel: UILabel = {
let v = UILabel()
v.text = "5 unerfüllte Wünsche"
v.font = UIFont(name: "AvenirNext", size: 12)
v.textColor = .white
v.font = v.font.withSize(12)
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
let wishlistImage: UIImageView = {
let v = UIImageView()
v.image = UIImage(named: "iconRoundedImage")
v.translatesAutoresizingMaskIntoConstraints = false
return v
}()
它在用户点击“主要愿望清单”后出现 -cell
如下所示:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if indexPath.item == 0 {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MainWishlistCell", for: indexPath) as! MainWishlistCell
cell.wishlistTapCallback = {
// let wishlistView appear
UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseIn, animations: {
self.wishlistView.transform = CGAffineTransform(translationX: 0, y: 0)
})
// let welcomeText disappear
UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseOut, animations: {
self.welcomeTextLabel.transform = CGAffineTransform(translationX: 0, y: 0)
})
}
return cell
}
else if indexPath.item <= theData.count {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ContentCell", for: indexPath) as! ContentCell
cell.testLabel.text = theData[indexPath.item - 1]
cell.testImage.image = self.image
cell.testImage.image = imageData[indexPath.item - 1]
return cell
}
// past the end of the data count, so return an "Add Item" cell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AddItemCell", for: indexPath) as! AddItemCell
// set the closure
cell.tapCallback = {
self.listNameTextfield.becomeFirstResponder()
// let newListView appear
UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut, animations: {
self.blurrImage.alpha = 0.96
self.blurrImage.transform = CGAffineTransform(translationX: 0, y: 0)
self.newListView.transform = CGAffineTransform(translationX: 0, y: 0)
self.view.layoutIfNeeded()
})
}
return cell
}
问题:
最后,每个cell
(愿望清单)都应该打开View
(有自己的TableView
和相应的UIImage
和Label
。但是我怎样才能TableView
为每个创建的新“愿望清单”加载一个新的呢?
我不是在这里寻找特定的代码答案!我对此很陌生,我不知道如何实现这一点。因此,如果您能向我解释如何进行以及实现此任务的基本想法是什么,我将不胜感激,在此先感谢 :) 如果有任何不清楚的地方,请告诉我。
解决方案
只需在那里实现另一个 UItableViewController,可能使用容器视图。它将包含的视图将是您的 TestList (UITableViewController)
推荐阅读
- php - PHPSpec 和两个 PSR-4 命名空间定义
- excel - 通过vba宏保存具有特定单元格名称的xlsm文件
- android - 在主活动中从 JSON 访问 null ArrayList
- android - 无法为 org.gradle.api.Project 类型的项目“:app”设置未知属性“localProperties”
- db2 - 如何关闭 db2 实例中的一个数据库?
- javascript - 如何将来自先前活动的文本数据发送到 API
- java - 使用 selenium-java 重新捕获
- postgresql - 在 PostgreSQL 函数中赋值时指定参数
- php - Select query inside the foreach loop in wordpress
- react-native - React 原生 RNFS 库