Как отладить «нераспознанный селектор, отправленный экземпляру» в Swift, пока метод не реализован - PullRequest
0 голосов
/ 24 марта 2020

У меня есть 2 UITextFields в моем текущем контроллере представления. Проблема, с которой я сталкиваюсь, заключается в том, что когда я заканчиваю sh, набирая текст в одном TextField и пытаюсь переместить курсор в другой, мое приложение не работает.

Я настроил свой контроллер представления для реализации UITextFieldDelegate. Установите для делегата двух TextFields значение self и реализуйте метод textFieldShouldReturn .

Полученное сообщение об ошибке:

[Snapagram.SnapViewController disableEditing: ]: нераспознанный селектор отправлен на экземпляр 0x7fabdc55d700.

Я пытался использовать точку останова Exception, но он возвращается только к 1-й строке AppDelegate. Так что я не знаю, какую часть моего кода размещать. Кроме того, у меня даже нет кода disableEditing в моем коде. У меня вопрос

  1. как я могу увидеть, какой объект вызывает этот метод
  2. почему вызывается этот метод, несмотря на то, что я не реализовал его

Редактировать:

это весь код контроллера представления, textFieldShouldReturn внизу.

import UIKit

class SnapViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {


    var chosenThread: Thread!
    var entry: ThreadEntry!
    var post: Post!
    var imageToDisplay: UIImage!

    @IBOutlet weak var threadCollectionView: UICollectionView!
    @IBOutlet weak var createButton: UIButton!
    @IBOutlet weak var imageDisplayed: UIImageView!
    @IBOutlet weak var captionField: UITextField!
    @IBOutlet weak var locationField: UITextField!
    @IBOutlet weak var postButton: UIButton!

    override func viewDidLoad() {
        imageDisplayed.image = imageToDisplay!
        super.viewDidLoad()
        postButton.layer.cornerRadius = 25.0
        createButton.layer.cornerRadius = 25.0

        threadCollectionView.delegate = self
        threadCollectionView.dataSource = self

        captionField.delegate = self
        locationField.delegate = self
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return feed.threads.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let index = indexPath.item
        let thread = feed.threads[index]

        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "chooseThreadCell", for: indexPath) as? ChooseThreadCollectionViewCell {
            cell.emojiLabel.text = thread.emoji
            cell.nameLabel.text = thread.name
            return cell
        } else {
            return UICollectionViewCell()
        }
    }

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        chosenThread = feed.threads[indexPath.item]
        entry = ThreadEntry(username: feed.username, image: imageToDisplay)
    }


    @IBAction func createPressed(_ sender: UIButton) {
        chosenThread.addEntry(threadEntry: entry)
    }

    @IBAction func postPressed(_ sender: Any) {
        post = Post(location: locationField.text!, image: imageToDisplay, user: feed.username, caption: captionField.text!, date: Date())
        feed.addPost(post: post)
    }
}

extension SnapViewController: UITextFieldDelegate {

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return true
    }
}

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