web-dev-qa-db-ja.com

迅速にカスタムポップアップビューを作成する方法は?

そのため、テーブルビューを使用するシンプルなアプリに取り組んでいます。このテーブルビューには、「プレーヤー」の名前が表示されます。ただし、テーブルビューにプレーヤーを追加するには、名前を入力するテキストフィールドを含むポップアップウィンドウを表示する必要があります。

現在、xibまたはnibファイルの作成について読んでいますが、ポップアップウィンドウを「ロード」する方法がわかりません。

これに対する最善のアプローチは何ですか?

次のようになります。

Pop up View

enter image description here

12
J Arango

必要なすべての尊重されたオブジェクトでカスタムUIViewを作成し、コントローラーのviewDidLoad()から非表示にします。

customView.hidden = true

ユーザーが何らかのアクションまたはタスクを実行するたびに、非表示を解除し、ユーザーが終了したら再度非表示にするまたはsuperViewから削除します。

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プロジェクト

プレイヤーの名前だけが必要な場合は、テキストフィールドを含むUIAlertControllerを使用します

15
Lamar

ストーリーボード内

  • ストーリーボードでUIViewControllerを1つ作成し、要件に応じて設計します。
  • AnotherViewControllerとしてカスタムクラスを設定し、another_view_sidとしてStoryboard_IDを設定します
  • 別のViewControllerおよびUIVIewControllerのサブクラスとして1つの新しいCocoa Touchクラスを作成します

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)

inotherViewController

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()
        }
    })
}
18
Mili Shah

このサードパーティの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)
1
huync