Есть три кнопки в UIView
и UITableView
под UIView
, я хочу загрузить xib при нажатии на кнопку. если первая кнопка нажата, загрузите новый xib, если вторая кнопка будет нажата, загрузите утвержденный xib, если третья кнопка нажмет, загрузка отклонена xib
@IBOutlet слабая переменная newButton: UIButton!
@IBOutlet weak var approvedButton: UIButton!
@IBOutlet weak var rejectedButton: UIButton!
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var approvedDownLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
approvedDownLabel.isHidden = true
rejectedDownLbl.isHidden = true
addNewTblview.dataSource = self
addNewTblview.delegate = self
newButton.isSelected = true
self.addNewTblview.register(UINib(nibName: "AddInstructorNewCell", bundle: nil), forCellReuseIdentifier: "AddInstructorNewCell")
self.addNewTblview.register(UINib(nibName: "ApprovedCell", bundle: nil), forCellReuseIdentifier: "ApprovedCell")
self.addNewTblview.register(UINib(nibName: "RejectedCell", bundle: nil), forCellReuseIdentifier: "RejectedCell")
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if newButton.isSelected {
let cell = self.addNewTblview.dequeueReusableCell(withIdentifier: "AddInstructorNewCell", for: indexPath) as! AddInstructorNewCell
return cell
} else if approvedButton.isSelected {
let cell = self.addNewTblview.dequeueReusableCell(withIdentifier: "ApprovedCell", for: indexPath) as! ApprovedCell
return cell
} else {
let cell = self.addNewTblview.dequeueReusableCell(withIdentifier: "RejectedCell", for: indexPath) as! RejectedCell
return cell
}
// return UITableViewCell()
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
if newButton.isSelected {
return 170
} else if approvedButton.isSelected{
return 165
}else {
return 178
}
// return 170
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
}
Вы можете установить условие в методе cellForRowAtIndexPath(), с помощью которого нажимается кнопка, чтобы вы могли просмотреть соответствующий xib
я борюсь с этим
ничего не происходит при нажатии на кнопку
Используйте контейнер с 3 различными viewControllers, которые лучше всего подходят
Сначала вы создаете класс ячеек дерева с .xib.
@IBAction func btnNewClick(_ sender:UIButton)
{
self.approvedButton.isSelected = false
self.rejectedButton.isSelected = false
self.Yourtbl.reloadData()
}
установить действие btnapprovedНажмите кнопку
@IBAction func btnapprovedClick(_ sender:UIButton)
{
self.approvedButton.isSelected = true
self.rejectedButton.isSelected = false
self.newButton.isSelected = false
self.Yourtbl.reloadData()
}
установить действие btnrejectedClick кнопку
@IBAction func btnrejectedClick(_ sender:UIButton)
{
self.approvedButton.isSelected = false
self.rejectedButton.isSelected = true
self.newButton.isSelected = false
self.Yourtbl.reloadData()
}
Я просто обновляю свой код @DynamoPRo Ваш код правильный, просто установите условие на вашей кнопке IBAction this
Почему бы вам не использовать enum? См. приведенный ниже код для дальнейшего ознакомления.
import UIKit
enum ViewType {
case new, approved, rejected
}
class ViewController {
private var viewType: ViewType = .new
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch viewType {
case .new :
let cell = self.addNewTblview.dequeueReusableCell(withIdentifier: "AddInstructorNewCell", for: indexPath) as! AddInstructorNewCell
return cell
case .approved:
let cell = self.addNewTblview.dequeueReusableCell(withIdentifier: "ApprovedCell", for: indexPath) as! ApprovedCell
return cell
case .rejected:
let cell = self.addNewTblview.dequeueReusableCell(withIdentifier: "RejectedCell", for: indexPath) as! RejectedCell
return cell
}
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
switch viewType {
case .new:
return 170
case .approved:
return 165
case .rejected:
return 178
}
}
@IBAction func btnNewClick(_ sender:UIButton)
{
viewType = .new
tableView.reloadData()
}
@IBAction func btnapprovedClick(_ sender:UIButton)
{
viewType = .approved
tableView.reloadData()
}
@IBAction func btnrejectedClick(_ sender:UIButton)
{
viewType = .rejected
tableView.reloadData()
}
}
Добавьте код, который вы уже пробовали.