web-dev-qa-db-ja.com

SwiftでView Controller間でデータを渡す

Objective-CのアプリをSwiftに変換しようとしていますが、Swiftを使用してビュー間でデータを渡す方法が見つかりません。私のObjective-Cコードは

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
AnsViewController *ansViewController;
ansViewController = [storyBoard instantiateViewControllerWithIdentifier:@"ansView"];
ansViewController.num = theNum;
[self presentViewController:ansViewController animated:YES completion:nil];

それは基本的に変数theNumを受け取り、それを別のView Controllerの変数numに渡します。これは簡単な質問かもしれませんが、Swiftと混同されているので、誰かがそれをSwift !

ありがとう

27
lagoon

firstViewに立ってDetailViewに移動し、firstViewからDetailviewにデータを渡したいと仮定します。ストーリーボードでこれを行うには、firstViewにメソッドがあります。

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "segueTest") {
      //Checking identifier is crucial as there might be multiple
      // segues attached to same view
      var detailVC = segue!.destinationViewController as DetailViewController;
      detailVC.toPass = textField.text
    }
}

そしてDetailViewのクラスに変数を宣言しました:

var toPass: String!

変数toPassを使用できます(もちろん、必要に応じて変数の型を変更できます。この例では、文字列型のデモのみです)。

36
lee
class AnsViewController: UIViewController {
   var theNum: Int

    override func viewDidLoad() {
        super.viewDidLoad()

        println(theNum)
    }

}

override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    let viewController = self.storyboard.instantiateViewControllerWithIdentifier("ansView") as AnsViewController
    viewController.num = theNum
    self.presentViewController(viewController, animated: true, completion: nil)
}
19
fuzz

Swiftで1つのコントローラーから別のコントローラーに文字列またはデータを渡すこと。

以下の手順に従います。

1)子コントローラにvar abc:string!としてプロパティを作成します

2)childcontrollerのオブジェクトを作成する

let storyboard:UIStoryboard()
let viewController: childcontroller = storyboard.instantiateViewControllerWithIdentifier("childcontroller") as! childcontroller
viewController.abc = "hello";
self.navigationController.pushviewController(Controller:viewController animated:true CompletionHandler:nil)
2
Rizwan Shaikh
     @IBAction func nextbtnpreesd(_ sender: Any) {

            let mystring = "2"
            performSegue(withIdentifier: "MusicVC", sender: mystring)
        }



override func prepare(for segue: UIStoryboardSegue, sender: Any?) {


        if let destination = segue.destination as? MusicVC{

            if let song = sender as? String{
                destination.strlablevalie = song
            }
        }
    }

// MusicVCで次のような文字列を作成します。

 var strlablevalie:String!
0
Paresh Hirpara
Using tableview,

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
        {
            let ClubProfileView = self.storyboard?.instantiateViewController(withIdentifier: "CBClubProfileViewController") as! CBClubProfileViewController

            let TempCulubDic:NSDictionary =
                ((ClubsListbyDateDic.object(forKey:((ClubsListbyDateDic.allKeys as! [String]).sorted(by: <)as NSArray).object(at: indexPath.section) as! String) as! NSArray).object(at: indexPath.row))as! NSDictionary

            let ClubId:String=(TempCulubDic.value(forKey: "club_id") as? String)!

            let CheckIndate:String=(TempCulubDic.value(forKey: "chekin_date") as? String)!

            ClubProfileView.ClubID=ClubId

            ClubProfileView.CheckInDate = CheckIndate

            // self.tabBarController?.tabBar.isHidden=true

            ClubProfileView.hidesBottomBarWhenPushed = true
            self.navigationController?.pushViewController(ClubProfileView, animated: true)
            }
0
Dipesh Khandhar

Swiftで1つのコントローラーから別のコントローラーに文字列またはデータを渡すこと。

以下の手順に従います。

1)(String、Int)var test:String!のような、必要なタイプの変数を作成します!

2)childcontrollerのオブジェクトを作成する

 let vc = self.storyboard?.instantiateViewController(withIdentifier: "Here identifier of your VC") as! (Here Name Of Your Controller)
 vc.test = "Hello" (Or any data which you want to pass)
 self.navigationController?.pushViewController(VC, animated: true)

それはあなたの問題を解決するはずです

0
user10079585