Как создать пользовательский всплывающий вид с помощью swift?
поэтому я работаю над простым приложением, где я использую представление таблицы. В этом представлении таблицы отображается имя "игроки". Но для того, чтобы добавить игроков в представление таблицы, я хочу, чтобы всплывающее окно отображалось с текстовым полем, в котором вы указываете имя.
теперь я читал о создании файла xib или nib, но я не уверен, как "загрузить" всплывающее окно.
каков наилучший подход к этому?
похоже, это:
3 ответов
вы создадите пользовательский UIView
со всеми уважаемыми объектами, необходимыми, из viewDidLoad () вашего контроллера вы скроете его.
customView.hidden = true
всякий раз, когда ваш пользователь хочет выполнить какое-либо действие или задачу, вы отобразить его и как только пользователь закончил, то снова спрятать его или удалить из суперпанель.
customView.hidden = false
ниже есть код, который поможет вам начать
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()
}
проверьте это github проект, он закрыт, чтобы быть готовым к производству, это дает вам лучший способ справиться (настоящий и уволить) с UIViews
если вы хотите только имя игрока, то используйте
UIAlertController
содержит текстовое поле
в раскадровке
- в раскадровке создайте один UIViewController и спроектируйте его в соответствии с вашим требованием.
- установить пользовательский класс как anotherViewController и Storyboard_ID как another_view_sid
- создайте один новый класс Cocoa Touch как anotherViewController и подкласс UIVIewController
в 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)
In anotherViewController
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()
}
})
}
Это 3rd партия EzPopup (https://github.com/huynguyencong/EzPopup) может помочь вам показать его. Просто создайте свое всплывающее окно в раскадровке, а затем введите его.
// 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)