팝뷰에서 할 때 데이터를 제출하고 싶을 때 직접 만든 델리멘에서 만든 샘플입니다.
17858 단어 Swift
AppDelegate는 일반입니다.이상한 거 없어요.
AppDelegate.swift
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
private var myNavigationController: UINavigationController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let myFirstViewController: FirstViewController = FirstViewController()
myNavigationController = UINavigationController(rootViewController: myFirstViewController)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = myNavigationController
self.window?.makeKeyAndVisible()
return true
}
//(あとは省略)
FirstViewController는 위임자입니다.대개 SecondViewController 대신 popView 를 수행합니다.
FirstViewController.swift
import UIKit
// 自作プロトコルを追加しておく
class FirstViewController: UIViewController, SecondViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.cyanColor()
// Controllerのタイトルを設定する.
self.title = "My 1st View"
/* 【上の文字列をSecondのtextFieldで書き換えてみる】 */
// ボタンの定義をおこなう.
let myButton = UIButton(frame: CGRectMake(0,0,100,50))
myButton.backgroundColor = UIColor.orangeColor()
myButton.layer.masksToBounds = true
myButton.setTitle("ボタン", forState: .Normal)
myButton.layer.cornerRadius = 20.0
myButton.layer.position = CGPoint(x: self.view.bounds.width/2, y:200)
myButton.addTarget(self, action: "onClickMyButton:", forControlEvents: .TouchUpInside)
self.view.addSubview(myButton);
}
/*
ボタンイベント
*/
internal func onClickMyButton(sender: UIButton){
// 移動先のViewを定義する.
let secondViewController = SecondViewController()
// デリゲートに、自身クラスのインスタンスを指定
secondViewController.delegate = self
// SecondViewに移動する.
self.navigationController?.pushViewController(secondViewController, animated: true)
}
// デリゲートメソッドを記述
func backFirst(viewController: SecondViewController, str: String) {
// 実際このviewControllerにはSecondのインスタンスが入ってくる。
// これが【代理】の作業
viewController.navigationController?.popViewControllerAnimated(true)
// strに渡したいデータを入れておいた
print(str)
self.title = str
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
SecondViewController는 위임자입니다.프로토콜을 통해 FirstView가 대신 처리하도록 하세요.
SecondViewController.swift
import UIKit
// プロトコルを自作
protocol SecondViewControllerDelegate {
func backFirst(viewController: SecondViewController, str: String)
}
class SecondViewController: UIViewController, UITextFieldDelegate {
private var myTextField: UITextField!
// delegateを用意
var delegate: SecondViewControllerDelegate!
override func viewDidLoad() {
super.viewDidLoad()
self.title = "My 2nd View"
self.view.backgroundColor = UIColor.greenColor()
// UITextFieldを作成する.
myTextField = UITextField(frame: CGRectMake(0,0,200,30))
myTextField.placeholder = "文字入力"
myTextField.delegate = self
myTextField.borderStyle = UITextBorderStyle.RoundedRect
myTextField.layer.position = CGPoint(x:self.view.bounds.width/2,y:100);
self.view.addSubview(myTextField)
// ボタンの定義をおこなう.
let myButton = UIButton(frame: CGRectMake(0,0,100,50))
myButton.backgroundColor = UIColor.orangeColor()
myButton.layer.masksToBounds = true
myButton.setTitle("ボタン", forState: .Normal)
myButton.layer.cornerRadius = 20.0
myButton.layer.position = CGPoint(x: self.view.bounds.width/2, y:200)
myButton.addTarget(self, action: "onClickMyButton:", forControlEvents: .TouchUpInside)
self.view.addSubview(myButton);
}
/*
ボタン押したとき
*/
func onClickMyButton(sender: UIButton) {
// デリゲートメソッドを呼び出す
self.delegate.backFirst(self, str: self.myTextField.text!)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
그게 다야.나는 델리먼에 대해 더 잘 알고 있다고 생각해.감사합니다.
Reference
이 문제에 관하여(팝뷰에서 할 때 데이터를 제출하고 싶을 때 직접 만든 델리멘에서 만든 샘플입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mochizukikotaro/items/8f6f9da49d15b55c3694텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)