I need to pass the title value associated with the cell from which the button is pressed to the second page and display the title in label.
All my attempts were displaying the value of the last cell in the table and not the address of the cell from which the click was made
class DisplayDataViewController : UIViewController, UITableViewDelegate , UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var spinner: UIActivityIndicatorView!
var dataArray : [MyDataaaaa] = []
let reuseIdentifier = "DAtaCelllll"
var ref : DatabaseReference!
override func viewDidLoad() {
tableView.delegate = self
tableView.dataSource = self
ref = Database.database().reference()
fetchDataFromFirebase()
// this spinner for out the table view cell
spinner.startAnimating()
spinner.isHidden = false
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as? DAtaCelllll
else {
return UITableViewCell()
}
cell.setValues(data: dataArray[indexPath.row])
cell.btn_xx.tag = indexPath.row
cell.btn_xx.addTarget(self, action: #selector(openNewPage(sender: )), for: .touchUpInside)
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 177
}
// this click on the all cell
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let vc = storyboard?.instantiateViewController(identifier: "TableView_BTN") as? TableView_BTN{
print("cell index = \(indexPath.row)")
present(vc, animated: true , completion: nil)
}
}
@objc
func openNewPage (sender : UIButton){
let VcSecond = storyboard?.instantiateViewController(withIdentifier: "TableView_BTN") as! TableView_BTN
VcSecond.title_ex = zzzz
present(VcSecond, animated: true , completion: nil)
print("button index = \(sender.tag)")
}
func fetchDataFromFirebase() {
self.dataArray=[]
ref.child("TEST_1 gym").child("Info").observeSingleEvent(of: .value, with: {snapshot in
let enumerator = snapshot.children
while let rest = enumerator.nextObject()as? FirebaseDatabase.DataSnapshot{
let value = rest.value as? NSDictionary
let data = MyDataaaaa.init()
let url = value?["image"] as? String ?? ""
let title = value?["title"] as? String ?? ""
let description = value?["description"] as? String ?? ""
let value1 = value?["value1"] as? String ?? ""
let value2 = value?["value2"] as? String ?? ""
data.setData(url: url, title: title, description: description ,value1:value1,value2: value2 )
self.dataArray.append(data)
}
self.tableView.reloadData()
self.spinner.startAnimating()
self.spinner.isHidden = true
}) {error in
print (error.localizedDescription)
}
}
}
class MyDataaaaa {
var imageURl : String
var titleText : String
var descText : String
var test1 : String
var test2 : String
init()
{
imageURl = ""
titleText = ""
descText = ""
test1 = ""
test2 = ""
}
func setData(url : String, title : String, description : String , value1 : String , value2: String ){
imageURl = url
titleText = title
descText = description
test1 = value1
test2 = value2
}
}
class DAtaCelllll : UITableViewCell {
@IBOutlet weak var dataImageView: UIImageView!
@IBOutlet weak var dataTitleText: UILabel!
@IBOutlet weak var dataDescText: UILabel!
@IBOutlet weak var test1: UILabel!
@IBOutlet weak var test2: UILabel!
@IBOutlet weak var btn_xx: UIButton!
@IBOutlet weak var cellSpinner: UIActivityIndicatorView!
func setValues(data : MyDataaaaa) {
// this spinner in the image
cellSpinner.startAnimating()
cellSpinner.isHidden = false
dataTitleText.text = data.titleText
dataDescText.text = data.descText
let storageRef = Storage.storage().reference(forURL: data.imageURl)
test1.text = data.test1
test2.text = data.test2
storageRef.getData(maxSize: 28060876) {(data,error) in
//this spinnper in the image
self.cellSpinner.startAnimating()
self.cellSpinner.isHidden = true
if let err = error {
print(err)
} else {
if let image = data {
let myImage : UIImage! = UIImage(data:image)
self.dataImageView.image = myImage
}
}
}
}
}
I want to display the title on the page.
class TableView_BTN: UIViewController {
@IBOutlet weak var img_image: UIImageView!
@IBOutlet weak var lbl_page_view: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}




