几天来,我一直在尝试将 IBOutlet 连接到 EditFreshReleaseViewController 中的releasedatepicker、artisttextfield、albumtextfield、saveTapped 和cancelTapped。但每当我运行该应用程序并点击“编辑”按钮时,该应用程序就会崩溃。当我断开该 ViewController 上的 IBOutlet 时,它会正常打开编辑按钮,但我被困在那里,因为现在该 ViewController 中没有任何功能。
有什么想法吗?
IBOutlets on EditFreshReleaseViewController
下面是 EditFreshReleaseViewController 的代码:
import UIKit
import CoreData
import UserNotifications
class EditFreshReleaseViewController: UIViewController {
@IBOutlet var artisttextfield: UITextField!
@IBOutlet var albumtextfield: UITextField!
@IBOutlet var releasedatePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
releasedatePicker.minimumDate = Date()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func saveTapped( _ sender: UIBarButtonItem) {
let artist = artisttextfield.text ?? ""
let album = albumtextfield.text ?? ""
let releasedate = releasedatePicker.date
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let newRelease = Release_Date(context: context)
newRelease.artist = artist
newRelease.album = album
newRelease.release_date = releasedate as NSDate?
newRelease.release_dateId = UUID().uuidString
if let uniqueId = newRelease.release_dateId {
print("The freshreleaseId is \(uniqueId)")
}
do {
try context.save()
let message = "\(artist)'s new album \(album) releases Today!"
let content = UNMutableNotificationContent()
content.body = message
content.sound = UNNotificationSound.default()
var dateComponents = Calendar.current.dateComponents([.month, .day],
from: releasedate)
dateComponents.hour = 09
dateComponents.minute = 00
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents,
repeats: true)
if let identifier = newRelease.release_dateId {
let request = UNNotificationRequest(identifier: identifier,
content: content, trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request, withCompletionHandler: nil)
}
} catch let error {
print("Could not save because of \(error).")
}
dismiss(animated: true, completion: nil)
print("Added a Release Date!")
print("Artist: \(newRelease.artist)")
print("Album: \(newRelease.album)")
print("Release Date: \(newRelease.release_date)")
}
@IBAction func cancelTapped(_ sender: UIBarButtonItem) {
dismiss(animated: true, completion: nil)
}
}
最佳答案
如果没有错误,很难找出解决方案,但您可以从使 @IBOutlet 变弱开始
@IBOutlet weak var artisttextfield: UITextField!
@IBOutlet weak var albumtextfield: UITextField!
@IBOutlet weak var releasedatePicker: UIDatePicker!
有时,当您从不同的 UIViewcontroller 复制并粘贴 UIViewcontroller 元素时,@IBOutlet 会丢失引用,请尝试清理项目,关闭 Xcode,重新启动所有内容。
关于swift - 当代码连接到 Storyboard时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53069760/