Swift — Пытаюсь настроить кнопку общего доступа

#swift

#swift

Вопрос:

Я пытаюсь настроить кнопку «Поделиться» с момента, когда я ее ранее кодировал. Должно быть, мне чего-то не хватает, но я не уверен, чего. Вы можете помочь? Это на другом контроллере представления, отличном от основного.

 import UIKit

class MoreViewController: UIViewController, UITabBarDelegate, UITextFieldDelegate {

    @IBAction func shareKnockingBuddy(_ sender: AnyObject) {

    let messageToSend = "Here is a message. (doorsKnocked)"

    let vc = UIActivityViewController(activityItems: [messageToSend], applicationActivities: nil)
    self.present(vc, animated: true, completion: nil)

  }

  override func viewDidLoad() {
    super.viewDidLoad()

  }


}
  

Вот моя ошибка: в делегате приложения это «Поток 1: signal SIGABRT». В сообщении внизу написано «* Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException’, причина: ‘-[UIViewController shareKnockingBuddy:]: нераспознанный селектор, отправленный в экземпляр 0x7fe282c02eb0’ * Первый стек вызовов throw:»

Ответ №1:

Обратите внимание, что ошибка связана с UIViewController, а не с вашим классом MoreViewController. Это означает, что вы не установили правильное имя класса для контроллера представления в вашей раскадровке. Измените ее на MoreViewController.

Комментарии:

1. Да, я совершенно уверен, что вы правы. Я довольно новичок в этом, но как мне убедиться, что я правильно установил class? Я думал, что уже сделал это, но, возможно, я что-то упустил. Спасибо!

2. Вот где я изначально установил класс. imgur.com/a/ZJnex Нужно ли мне установить его еще где-нибудь? Я создал это как файл Swift, а не как файл cocoa, может быть, в этом проблема?

3. Так и должно быть. Теперь, когда он установлен, вам, возможно, потребуется повторно подключить действия.

4. Я попытался повторно подключить действия, и это все еще не сработало. Вот ошибка, которую он продолжает мне выдавать. imgur.com/a/xXm4T Я действительно в замешательстве.

5. Это та же ошибка, которая означает, что вы еще не исправили контроллер представления.