표시된 팝업 컨트롤러의 셀을 누른 후 셀 텍스트를 매개 변수로 리셋
팝업 버튼 표시 정보
이번에는 UIPopoverPresentationController를 사용합니다.
원래 UIPresentation Controller를 준비했는데 아이폰으로 표시가 안 되는 등
업데이트된 클래스는 UIPopoverPresentationController입니다.
그래서 이번에는 UIPopover Presentation Controller를 이용하려고 합니다.
또한 팝업 메뉴에 TableView를 표시하고 해당 항목의 String(텍스트)을
리셋을 목표로 하다.
클래스 구성 정보
팝업 메뉴의 클래스 표시
표시된 테이블 뷰 클래스
TableView 클래스에 엔클로저 전달func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
시변용 엔클로저.
팝업 메뉴의 클래스 보이기
objective-cimport UIKit
class LoginViewController: UIViewController,UIPopoverPresentationControllerDelegate {
///UserIdを入力するtextField
@IBOutlet weak var UserIdTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
///押下時にポップオーバーを表示させる。
@IBAction func tappedPopover(_ sender: UIButton) {
let viewController = TableViewController() //popoverで表示するViewController
viewController.modalPresentationStyle = .popover
viewController.preferredContentSize = CGSize(width: 200, height: 44*3)
let presentationController = viewController.popoverPresentationController
presentationController?.delegate = self
presentationController?.permittedArrowDirections = .up
presentationController?.sourceView = sender
presentationController?.sourceRect = sender.bounds
viewController.closure = { (string) in
print("string")
}
present(viewController, animated: true, completion: nil)
}
func adaptivePresentationStyle(for controller: UIPresentationController,
traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}
}
표시된 테이블 뷰 클래스
import UIKit
class TableViewController: UITableViewController {
//元クラスから受け渡されるクロージャ
//コールバックしたい時に本クロージャを呼び出す
var closure: ((String)->Void)? = nil
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 3
}
//挿入したいデータ(TableViewCell)を1行ずつ生成する
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
if cell == nil {
cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "Cell")
}
cell?.textLabel?.text = "aaa"
return cell!
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
let cellString = cell?.textLabel?.text
closure?(cellString!)
self.dismiss(animated: false, completion: nil)
}
}
Reference
이 문제에 관하여(표시된 팝업 컨트롤러의 셀을 누른 후 셀 텍스트를 매개 변수로 리셋), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/godaikun_method/items/04d355fe026b50382a8f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
class LoginViewController: UIViewController,UIPopoverPresentationControllerDelegate {
///UserIdを入力するtextField
@IBOutlet weak var UserIdTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
///押下時にポップオーバーを表示させる。
@IBAction func tappedPopover(_ sender: UIButton) {
let viewController = TableViewController() //popoverで表示するViewController
viewController.modalPresentationStyle = .popover
viewController.preferredContentSize = CGSize(width: 200, height: 44*3)
let presentationController = viewController.popoverPresentationController
presentationController?.delegate = self
presentationController?.permittedArrowDirections = .up
presentationController?.sourceView = sender
presentationController?.sourceRect = sender.bounds
viewController.closure = { (string) in
print("string")
}
present(viewController, animated: true, completion: nil)
}
func adaptivePresentationStyle(for controller: UIPresentationController,
traitCollection: UITraitCollection) -> UIModalPresentationStyle {
return .none
}
}
import UIKit
class TableViewController: UITableViewController {
//元クラスから受け渡されるクロージャ
//コールバックしたい時に本クロージャを呼び出す
var closure: ((String)->Void)? = nil
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 3
}
//挿入したいデータ(TableViewCell)を1行ずつ生成する
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
if cell == nil {
cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "Cell")
}
cell?.textLabel?.text = "aaa"
return cell!
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
let cellString = cell?.textLabel?.text
closure?(cellString!)
self.dismiss(animated: false, completion: nil)
}
}
Reference
이 문제에 관하여(표시된 팝업 컨트롤러의 셀을 누른 후 셀 텍스트를 매개 변수로 리셋), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/godaikun_method/items/04d355fe026b50382a8f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)