想在 swift3 中创建一个集合视图
want to create a collection view in swift3
我想创建具有可扩展格式的 uicollectionview。
当我们点击可扩展单元格时,应该加载部分单元格中的更多内容。再次录音后关闭该部分。
这就像展开和折叠部分。
部分单元格和内部单元格都是动态的。
你将不得不做这样的事情。
全局创建一个这样的结构,以便您可以在//您的 table 方法中访问它们。
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate{
@IBOutlet var tblView: UITableView!
let arr = [ "dict1":["1":"one","2":"two"],
"dict2":["3":"three","2":"four"],
] as [String : Any]
var arrDict = [[String:AnyObject]]()
var aDict1 = [String:Any]()
var aDict2 = [String:Any]()
var aDict3 = [String:Any]()
var isbuttonTappedForExpand = false
override func viewDidLoad() {
super.viewDidLoad()
aDict1 = ["Tittle": "Quick Start",
"RowKey": "0",
"ValueKey": ["Section0 row0",
"Section0 row1",
"Section0 row2",
]
] as [String : Any]
aDict2 = ["Tittle": "Personal",
"RowKey": "0",
"ValueKey": ["Section0 row1",
"Section1 row1",
"Section1 row2",
]
] as [String : Any]
aDict3 = ["Tittle": "Business",
"RowKey": "0",
"ValueKey": ["Section0 row2",
"Section2 row1",
"Section2 row2",
]
] as [String : Any]
arrDict.append(aDict1 as [String : AnyObject])
arrDict.append(aDict2 as [String : AnyObject])
arrDict.append(aDict3 as [String : AnyObject])
print("Array of dictionaries is\(arrDict)")
print([arr ])
print( arrDict[0]["Tittle"] ?? 2)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//Then pass your data into tableview delegate methods
func numberOfSections(in tableView: UITableView) -> Int {
return arrDict.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if (arrDict[section]["RowKey"] as? String == "0"){
return 0
}
else{
return arrDict.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell:CustomTableViewCell = tableView .dequeueReusableCell(withIdentifier: "cell") as! CustomTableViewCell
let arr = arrDict[indexPath.row]["ValueKey"] as! [String]
cell.btnClickAddMore.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside)
return cell
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat{
return 100
}
//you will have to add sections first after clicking on sections you will get your cell so here you will make your view for section
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){
view.tintColor = UIColor .black
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let rect = CGRect(x: 0, y: 0, width: tblView.frame.size.width, height: 100)
let headerView = UIView(frame:rect)
headerView.backgroundColor = .blue
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "SectionView", bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! SectionViewClass
view.btnClickAdd.backgroundColor = .blue
view.btnClickAdd.tag = section
view.btnClickAdd.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside)
view.frame = headerView.bounds
view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
headerView.addSubview(view)
return headerView
}
func pressButton(button: UIButton) {
if (arrDict[button.tag]["RowKey"] as? String == "0") {
arrDict[button.tag]["RowKey"] = "1" as AnyObject?
}
else if (arrDict[button.tag]["RowKey"] as? String == "1") {
arrDict[button.tag]["RowKey"] = "0" as AnyObject?
}
tblView .reloadData()
}
}
我想创建具有可扩展格式的 uicollectionview。 当我们点击可扩展单元格时,应该加载部分单元格中的更多内容。再次录音后关闭该部分。 这就像展开和折叠部分。 部分单元格和内部单元格都是动态的。
你将不得不做这样的事情。
全局创建一个这样的结构,以便您可以在//您的 table 方法中访问它们。
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate{
@IBOutlet var tblView: UITableView!
let arr = [ "dict1":["1":"one","2":"two"],
"dict2":["3":"three","2":"four"],
] as [String : Any]
var arrDict = [[String:AnyObject]]()
var aDict1 = [String:Any]()
var aDict2 = [String:Any]()
var aDict3 = [String:Any]()
var isbuttonTappedForExpand = false
override func viewDidLoad() {
super.viewDidLoad()
aDict1 = ["Tittle": "Quick Start",
"RowKey": "0",
"ValueKey": ["Section0 row0",
"Section0 row1",
"Section0 row2",
]
] as [String : Any]
aDict2 = ["Tittle": "Personal",
"RowKey": "0",
"ValueKey": ["Section0 row1",
"Section1 row1",
"Section1 row2",
]
] as [String : Any]
aDict3 = ["Tittle": "Business",
"RowKey": "0",
"ValueKey": ["Section0 row2",
"Section2 row1",
"Section2 row2",
]
] as [String : Any]
arrDict.append(aDict1 as [String : AnyObject])
arrDict.append(aDict2 as [String : AnyObject])
arrDict.append(aDict3 as [String : AnyObject])
print("Array of dictionaries is\(arrDict)")
print([arr ])
print( arrDict[0]["Tittle"] ?? 2)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//Then pass your data into tableview delegate methods
func numberOfSections(in tableView: UITableView) -> Int {
return arrDict.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if (arrDict[section]["RowKey"] as? String == "0"){
return 0
}
else{
return arrDict.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell:CustomTableViewCell = tableView .dequeueReusableCell(withIdentifier: "cell") as! CustomTableViewCell
let arr = arrDict[indexPath.row]["ValueKey"] as! [String]
cell.btnClickAddMore.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside)
return cell
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat{
return 100
}
//you will have to add sections first after clicking on sections you will get your cell so here you will make your view for section
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){
view.tintColor = UIColor .black
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let rect = CGRect(x: 0, y: 0, width: tblView.frame.size.width, height: 100)
let headerView = UIView(frame:rect)
headerView.backgroundColor = .blue
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "SectionView", bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! SectionViewClass
view.btnClickAdd.backgroundColor = .blue
view.btnClickAdd.tag = section
view.btnClickAdd.addTarget(self, action: #selector(pressButton(button:)), for: .touchUpInside)
view.frame = headerView.bounds
view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
headerView.addSubview(view)
return headerView
}
func pressButton(button: UIButton) {
if (arrDict[button.tag]["RowKey"] as? String == "0") {
arrDict[button.tag]["RowKey"] = "1" as AnyObject?
}
else if (arrDict[button.tag]["RowKey"] as? String == "1") {
arrDict[button.tag]["RowKey"] = "0" as AnyObject?
}
tblView .reloadData()
}
}