Swift удаляет subview из другого класса

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;
}

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

0
задан regina_fallangi 13 July 2018 в 19:39
поделиться

1 ответ

Вы можете использовать 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))
    }
}
0
ответ дан Popmedic 17 August 2018 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: