简体   繁体   中英

Each cell open view

How to make Each Cell open the specific view for its indexpath. In tableview didselect what should i do to make each cell open as its own indexpath so each cell have a different data in the next view

i am tryin when click in a cell in the tableview the next view present it self with it's own data as the next view contain a uitextview like in note app

what should i apply at row didselect

// MARK: -TableFunctions
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return SavingTasks.count
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let newtask = self.SavingTasks[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
    cell.TheLabel?.text = newtask
    return cell
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if(editingStyle == .delete)
    {
        self.SavingTasks.remove(at: indexPath.row)
        self.TasksTable.deleteRows(at: [indexPath], with: .fade)
        GetData()
    }
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let NewIndex = self.SavingTasks[indexPath.row]
    let view = self.storyboard?.instantiateViewController(withIdentifier: "TaskDetail") as! TaskDetail
    view.SavingDetails = [NewIndex]
    view.Index = indexPath.row
    self.navigationController?.pushViewController(view, animated: true)
}

next class should be appeared

class TaskDetail: UIViewController {

var Delegate: NoteDetailDelegate!
var SavingDetails = [String]()
var Index: Int?



@IBOutlet weak var TaskDetailsFiled: UITextView!
@IBAction func SaveTDF(_ sender: UIButton) {

    UserDefaults.standard.set(TaskDetailsFiled.text, forKey: "Saved")
    self.navigationController?.popViewController(animated: true)
}

You can use a segue and prepare(for:sender:) to get the next view controller ready more easily than instantiating the view controller and popping it via code. Official documentation here and a sample app from Apple here

An implementation example:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "mysegue"{
        if let nextViewController = segue.destination as? NextViewController{
                nextViewController.Index = 2
        }
    }
} 

A highlight from the official doc:

For example, if the segue originated from a table view, the sender parameter would identify the table view cell that the user tapped

If you want to stick with the code implementation, you can call view.myvariable = myvalue in your didSelect

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM