Je travaille donc sur une application simple, où j'utilise une vue de table. Cette vue de table affiche le nom des "joueurs". Mais pour que j'ajoute des joueurs dans la vue de table, je veux qu'une fenêtre pop-up soit affichée avec un champ de texte où vous fournissez le nom.
Maintenant, j'ai lu sur la création d'un fichier xib ou nib, mais je ne sais pas comment "charger" la fenêtre contextuelle.
Quelle est la meilleure approche à ce sujet?
Ressemble à ça:
vous créeriez un UIView
personnalisé avec tous les objets respectés nécessaires, à partir de la vue de votre contrôleurDidLoad () vous le cacheriez.
customView.hidden = true
Chaque fois que votre utilisateur souhaite effectuer une action ou une tâche, vous l'affichez et une fois que l'utilisateur a terminé, le masquez à nouveau ou supprimer de la superView .
customView.hidden = false
Ci-dessous, il y a du code pour vous aider à démarrer
private var customView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
customView.hidden = true
}
private func loadCustomViewIntoController() {
let customViewFrame = CGRect(x: 0, y: 0, witdh: view.frame.width, height: view.frame.height - 200)
customView = UIView(frame: customViewFrame)
view.addSubview(customView)
customView.hidden = false
// any other objects should be tied to this view as superView
// for example adding this okayButton
let okayButtonFrame = CGRect(x: 40, y: 100, width: 50, height: 50)
let okayButton = UIButton(frame: okayButtonFrame )
// here we are adding the button its superView
customView.addSubview(okayButton)
okayButton.addTarget(self, action: #selector(self.didPressButtonFromCustomView:), forControlEvents:.TouchUpInside)
}
func didPressButtonFromCustomView(sender:UIButton) {
// do whatever you want
// make view disappears again, or remove from its superview
}
@IBAction func rateButton(sender:UIBarButtonItem) {
// this barButton is located at the top of your tableview navigation bar
// when it pressed make sure you remove any other activities that were on the screen, for example dismiss a keyboard
loadCustomViewIntoController()
}
Découvrez-le projet github , il est fermé pour être prêt pour la production, il vous donne une meilleure façon de traiter (présenter et rejeter) avec UIViews
Si vous ne voulez que le nom du joueur, utilisez un
UIAlertController
contenant un champ de texte
Dans le storyboard
Dans viewController
let popvc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "another_view_sid") as! anotherViewController
self.addChildViewController(popvc)
popvc.view.frame = self.view.frame
self.view.addSubview(popvc.view)
popvc.didMove(toParentViewController: self)
Dans un autreViewController
override func viewDidLoad() {
super.viewDidLoad()
showAnimate()
}
}
@IBAction func Close_popupView(_ sender: Any) {
removeAnimate()
}
func showAnimate()
{
self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
self.view.alpha = 0.0
UIView.animate(withDuration: 0.25, animations: {
self.view.alpha = 1.0
self.view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
})
}
func removeAnimate()
{
UIView.animate(withDuration: 0.25, animations: {
self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
self.view.alpha = 0.0
}, completion: {(finished : Bool) in
if(finished)
{
self.willMove(toParentViewController: nil)
self.view.removeFromSuperview()
self.removeFromParentViewController()
}
})
}
Cet EzPopup tiers ( https://github.com/huynguyencong/EzPopup ) peut vous aider à l'afficher. Concevez simplement votre popup dans le storyboard, puis lancez-le.
// init YourViewController
let contentVC = ...
// Init popup view controller with content is your content view controller
let popupVC = PopupViewController(contentController: contentVC, popupWidth: 100, popupHeight: 200)
// show it by call present(_ , animated:) method from a current UIViewController
present(popupVC, animated: true)