serializeArray
уже делает именно это. Вам просто нужно массировать данные в требуемый формат:
function objectifyForm(formArray) {//serialize data function
var returnArray = {};
for (var i = 0; i < formArray.length; i++){
returnArray[formArray[i]['name']] = formArray[i]['value'];
}
return returnArray;
}
Следите за скрытыми полями, которые имеют то же имя, что и реальные входы, поскольку они будут перезаписаны.
Вы можете использовать self.removeFromSuperview()
// Completely agree with comments, change to ChatOverlay
class chatOverlay: UIView {
@IBAction func closeOverlay(_ sender: UIButton) {
self.removeFromSuperview()
}
}
Если вы хотите, чтобы он исчезал
// Again, completely agree with comments, change to ChatOverlay
class chatOverlay: UIView {
@IBAction func closeOverlay(_ sender: UIButton) {
UIView.animate(withDuration: 0.5, animations: {
self.alpha = 0.0
}) { (_) in
self.removeFromSuperview()
}
}
}
Мне действительно интересно, как вы используя UIView
внутри chatOverlay
, когда вы только импортируете Foundation
? Кроме того, не могу понять, почему в overlayAdd
вы импортируете как Foundation
, так и UIKit
? UIKit
сам импортирует Foundation
. Самое большое совпадение ко мне - почему у вас есть класс overlayAdd
? Не должна ли функция show
быть более функцией create
(вы не показываете ее, пока не добавите ее в качестве поднабора) и просто станьте частью chatOverlay
? Что-то вроде:
// Completely agree with comments, change to ChatOverlay
class chatOverlay: UIView {
@IBAction func closeOverlay(_ sender: UIButton) {
UIView.animate(withDuration: 0.5, animations: {
self.alpha = 0.0
}) { (_) in
self.removeFromSuperview()
}
}
static func create(withFrame: frame, tag: Int) -> UIView{
let chatOverlay = xibLoad().chatOverlay()
chatOverlay.frame = frame
chatOverlay.tag = tag
/*
What in the world are you trying to do here???
let view = chatOverlay
return view
get rid of these two completely useless lines!
just return chatOverlay like below...
*/
return chatOverlay
}
}
, а затем в chatPage:
// Completely agree with comments, change to ChatPage
class chatPage: UIViewController {
override func viewDidLoad(){
view.addSubview(chatOverlay.create(withFrame: view.frame, tag: 101))
}
}