Swift4でポップオーバーサブビューからビューコントローラーにデータを渡す方法

カーターファイティ

UITextFieldサブビューの一部である(taskNameField)サブビューからテキストデータを渡そうとしていますtaskCreatorサブビューの外でこのデータを取得して、タスク配列に追加する方法がわかりません。どんな助けでも大歓迎です。

import UIKit

var userTasks: [Task] = []

class PlannerViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UITextFieldDelegate {

static let viewHeight = UIScreen.main.bounds.height
static let viewWidth = UIScreen.main.bounds.width

override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 110, left: 10, bottom: 10, right: 10)
    layout.itemSize = CGSize(width: view.frame.width - 30, height: 60)

    let myCollectionView:UICollectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    myCollectionView.dataSource = self
    myCollectionView.delegate = self
    myCollectionView.register(TaskCell.self, forCellWithReuseIdentifier: "cellID")
    myCollectionView.backgroundColor = UIColor.darkGray
    self.view.addSubview(myCollectionView)

    let addButton = UIButton(frame: CGRect(x: view.frame.width - 70, y: view.frame.height - 120, width: 50, height: 50))
    addButton.backgroundColor = UIColor.red
    addButton.setBackgroundImage(#imageLiteral(resourceName: "PlusIcon"), for: UIControlState.normal)
    addButton.layer.cornerRadius = 25
    addButton.addTarget(self, action: #selector(addTask), for: .touchUpInside)
    self.view.addSubview(addButton)
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 10
}

internal func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellID", for: indexPath) as! TaskCell
    cell.layer.masksToBounds = true
    cell.layer.cornerRadius = 10
    cell.backgroundColor = UIColor.black
    return cell
}

@IBAction func addTask(sender: UIButton) {
    view.addSubview(taskCreator)
}

@IBAction func saveTask(sender: UIButton) {
    taskCreator.removeFromSuperview()
}

let taskCreator: UIView = {
    let object = UIView()
    object.frame = CGRect(x: 10, y: 50, width: viewWidth - 20, height: viewHeight - 350)
    object.layer.cornerRadius = 10
    object.backgroundColor = UIColor.lightGray

    let taskNameField: UITextField = {
        let field = UITextField()
        field.frame = CGRect(x: 20, y: 20, width: object.frame.width - 40, height: 30)
        field.layer.cornerRadius = 5
        field.placeholder = "New Task"
        field.textAlignment = NSTextAlignment(rawValue: 3)!
        field.becomeFirstResponder()
        return field
    }()

    let doneButton: UIButton = {
        let done = UIButton()
        done.frame = CGRect(x: viewWidth / 2 - 55, y: 200, width: 90, height: 30)
        done.layer.cornerRadius = 5
        done.backgroundColor = UIColor.blue
        done.addTarget(self, action: #selector(saveTask), for: .touchUpInside)
        return done
    }()

    object.addSubview(taskNameField)
    object.addSubview(doneButton)

    return object
}()

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}
Rakesha Shastri

を取得したい場合は、UITextFieldこれと同じくらい簡単です。

var textFieldValue = taskNameField.text

ただし、ユーザーがテキストフィールドに何かを入力した直後に必要な場合は、準拠する必要のあるデリゲートメソッドを使用する必要がUITextFieldDelegateありますUIViewController

func textFieldDidEndEditing(textField: UITextField) {
    var textFieldValue = textField.text
    // Do something with the value like adding it to a Task object
}

ビューの外部でテキストフィールドにアクセスする必要がある場合は、外部で宣言する必要があります。またlazy、必要な場合にのみ作成されるように宣言します。

lazy var doneButton: UIButton = {
    let done = UIButton()
    done.frame = CGRect(x: viewWidth / 2 - 55, y: 200, width: 90, height: 30)
    done.layer.cornerRadius = 5
    done.backgroundColor = UIColor.blue
    done.addTarget(self, action: #selector(saveTask), for: .touchUpInside)
    return done
}()

lazy var taskNameField: UITextField = {
    let field = UITextField()
    field.frame = CGRect(x: 20, y: 20, width: object.frame.width - 40, height: 30)
    field.layer.cornerRadius = 5
    field.placeholder = "New Task"
    field.textAlignment = NSTextAlignment(rawValue: 3)!
    field.becomeFirstResponder()
    return field
}()

lazy var taskCreator: UIView = {
    let object = UIView()
    object.frame = CGRect(x: 10, y: 50, width: viewWidth - 20, height: viewHeight - 350)
    object.layer.cornerRadius = 10
    object.backgroundColor = UIColor.lightGray

    object.addSubview(taskNameField)
    object.addSubview(doneButton)

    return object
}()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Swift、データをポップオーバーからビューコントローラーに戻す

分類Dev

Swiftのタブバーでテーブルビューからビューコントローラーにデータを渡す

分類Dev

ポップオーバー ビュー コントローラーからメイン ビュー コントローラーにデータを送信する方法。文字列を渡して、メインビューのラベルテキストとして作成できるようにします

分類Dev

テーブルビューからビューコントローラーにデータを渡す

分類Dev

タブバーコントローラービューからサブビューを削除する方法

分類Dev

ビューコントローラからタブバービューコントローラにデータを渡す

分類Dev

Laravel:ビュー/ブレードからデータを取得してコントローラーに渡す方法

分類Dev

ビューコントローラからタブバーコントローラの最初のタブにデータを渡す方法

分類Dev

ビューの選択ドロップダウンでコントローラーからビューにデータを渡す

分類Dev

親ビューコントローラーから子コンテナービューコントローラーにデータを渡す方法

分類Dev

ビューからコントローラーにデータを渡す

分類Dev

ビューからコントローラーにデータを渡す

分類Dev

ビューからコントローラーにデータを渡すLaravel

分類Dev

別のビューからタブバーコントローラーの特定のビューにperformSegueを実行する方法(swift 4)

分類Dev

選択したデータをビューからコントローラーに渡し、コントローラーからビューに戻す方法

分類Dev

ポップアップビューコントローラから前のビューコントローラに値を渡す方法は?

分類Dev

Swift-テーブルビューから3番目のビューコントローラーにデータを渡します

分類Dev

ビューからメソッドにデータを渡すコントローラーで作成

分類Dev

NSURLオブジェクトをあるビューコントローラーから別のビューコントローラーに渡す方法

分類Dev

ビューコントローラーからタブバーコントローラー、ナビゲーションコントローラーにデータを渡す方法は?

分類Dev

Firebaseデータをテーブルビューセルからビューコントローラーに渡す方法は?

分類Dev

コントローラのcodeigniterからビューにデータを渡す

分類Dev

タブバーコントローラーからビューコントローラーをプログラムでアンロードする方法は?

分類Dev

ci でビューからコントローラーにデータを渡す際のエラー

分類Dev

Swiftで親ビューコントローラーからコンテナーVC子にデータを複数回渡す方法は?

分類Dev

asp.netでオブジェクトをコントローラーからビューに渡す方法(かみそりではなくモーターaspx)

分類Dev

タブバーコントローラーを介して2番目のビューから最初のビューに値を渡す方法

分類Dev

セグエなしでビューコントローラーからタブバービューコントローラーに画像ビューを渡す方法は?

分類Dev

コントローラからのビューでjqueryにデータを渡す方法

Related 関連記事

  1. 1

    Swift、データをポップオーバーからビューコントローラーに戻す

  2. 2

    Swiftのタブバーでテーブルビューからビューコントローラーにデータを渡す

  3. 3

    ポップオーバー ビュー コントローラーからメイン ビュー コントローラーにデータを送信する方法。文字列を渡して、メインビューのラベルテキストとして作成できるようにします

  4. 4

    テーブルビューからビューコントローラーにデータを渡す

  5. 5

    タブバーコントローラービューからサブビューを削除する方法

  6. 6

    ビューコントローラからタブバービューコントローラにデータを渡す

  7. 7

    Laravel:ビュー/ブレードからデータを取得してコントローラーに渡す方法

  8. 8

    ビューコントローラからタブバーコントローラの最初のタブにデータを渡す方法

  9. 9

    ビューの選択ドロップダウンでコントローラーからビューにデータを渡す

  10. 10

    親ビューコントローラーから子コンテナービューコントローラーにデータを渡す方法

  11. 11

    ビューからコントローラーにデータを渡す

  12. 12

    ビューからコントローラーにデータを渡す

  13. 13

    ビューからコントローラーにデータを渡すLaravel

  14. 14

    別のビューからタブバーコントローラーの特定のビューにperformSegueを実行する方法(swift 4)

  15. 15

    選択したデータをビューからコントローラーに渡し、コントローラーからビューに戻す方法

  16. 16

    ポップアップビューコントローラから前のビューコントローラに値を渡す方法は?

  17. 17

    Swift-テーブルビューから3番目のビューコントローラーにデータを渡します

  18. 18

    ビューからメソッドにデータを渡すコントローラーで作成

  19. 19

    NSURLオブジェクトをあるビューコントローラーから別のビューコントローラーに渡す方法

  20. 20

    ビューコントローラーからタブバーコントローラー、ナビゲーションコントローラーにデータを渡す方法は?

  21. 21

    Firebaseデータをテーブルビューセルからビューコントローラーに渡す方法は?

  22. 22

    コントローラのcodeigniterからビューにデータを渡す

  23. 23

    タブバーコントローラーからビューコントローラーをプログラムでアンロードする方法は?

  24. 24

    ci でビューからコントローラーにデータを渡す際のエラー

  25. 25

    Swiftで親ビューコントローラーからコンテナーVC子にデータを複数回渡す方法は?

  26. 26

    asp.netでオブジェクトをコントローラーからビューに渡す方法(かみそりではなくモーターaspx)

  27. 27

    タブバーコントローラーを介して2番目のビューから最初のビューに値を渡す方法

  28. 28

    セグエなしでビューコントローラーからタブバービューコントローラーに画像ビューを渡す方法は?

  29. 29

    コントローラからのビューでjqueryにデータを渡す方法

ホットタグ

アーカイブ