проблема действия ячейки табличного представления xcode - PullRequest
0 голосов
/ 26 июня 2018

Итак, я создаю это приложение todo.Это на столе.И каждая ячейка при нажатии или нажатии должна вести вас на поисковый запрос ask.com, чтобы найти предмет, если неясно, что это за предмет.Я получил его для поиска на ask.com с кодом, который я написал.Но проблема, которая у меня возникает, заключается в том, что после первого щелчка.Страница не обновляется и не обновляется.Я могу нажать на вторую или третью ячейку, и она не будет искать то, что находится в этой конкретной ячейке.Он продолжает показывать то, что находится в первой ячейке.и не изменится.Я попытался очистить ячейки, и он все еще продолжает проходить как старый поиск с первого раза.Пример: Ячейка 1: чистящие средства Ячейка 2: велосипед Ячейка 3: собака.Независимо от того, какую ячейку я выберу, в ней будет показан только чистящий продукт.Даже если я поменяю ячейку 1 на другой предмет.Как я могу это исправить.Исходный код был бы потрясающим.

  import UIKit
class NewTableViewController: UITableViewController, NewCellDelegate, {
 var news:[News]!

override func viewDidLoad() {
    super.viewDidLoad()

    loadData()

    func loadData() {
        news = [News]()
        news = DataManager.loadAll(News.self).sorted(by: {$0.createdAt < $1.createdAt})
        self.tableView.reloadData()

    }

    @IBAction func Save(_ sender: Any) {
        let addAlert = UIAlertController(title: "ADD", message: "TODO", preferredStyle: .alert)
        addAlert.addTextField { (textfield:UITextField) in
            textfield.placeholder = "TODO"
        }

        addAlert.addAction(UIAlertAction(title: "Save", style: .default, handler: { (action:UIAlertAction) in
            guard let title = addAlert.textFields?.first?.text else {return}
            let newsave = News(title: title, completed: false, createdAt: Date(), itemIdentifier: UUID())
            newsave.saveItem()
            self.news.append(newsave)

            let indexPath = IndexPath(row: self.tableView.numberOfRows(inSection: 0), section: 0)

            self.tableView.insertRows(at: [indexPath], with: .automatic)


        }))

        addAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))

        self.present(addAlert, animated: true, completion: nil)

    }

};

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return news.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! NewTableViewCell
    cell.delegte = self

    let news = self.news[indexPath.row]

    cell.label.text = news.title

    return cell
}

func tableView(tableView: UITableView, didSelectRowAt indexPath:
        NSIndexPath) {
    //getting the index path of selected row
    let indexPath = tableView.indexPathForSelectedRow

    //getting the current cell from the index path
    let currentCell = tableView.cellForRow(at: indexPath!)! as UITableViewCell

    //getting the text of that cell
    let TODO = currentCell.textLabel!.text

    let appURL = NSURL(string: "https://www.ask.com/web?q=\
        (TODO))&o=0&qo=homepageSearchBox)")

    if UIApplication.shared.canOpenURL(appURL! as URL) {
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(appURL! as URL, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(appURL! as URL)
        }

    }
}
  }

1 Ответ

0 голосов
/ 26 июня 2018

Я думаю, это относится к поисковому контенту, измените это

 let currentCell = tableView.cellForRow(at: indexPath!)! as UITableViewCell

до

 let currentCell = tableView.cellForRow(at: indexPath!) as! NewTableViewCell

&&& изменить это

 let TODO = currentCell.textLabel!.text

до

let TODO = currentCell.label.text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...