it-swarm.com.de

Übertragen von Daten zwischen View Controllern in Swift

Ich versuche, eine App von Objective-C nach Swift zu konvertieren, finde aber nicht, wie mit Swift Daten zwischen Ansichten übertragen werden. Mein Objective-C-Code lautet

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

Das bedeutet, dass im Wesentlichen die Variable theNum an die Variable num an einen anderen View-Controller übergeben wird. Ich weiß, dass dies eine einfache Frage sein kann, aber ich bin ziemlich verwirrt mit Swift. Wenn also jemand erklären könnte, wie er es in Swift geändert hat, wäre das sehr dankbar!

Vielen Dank

24
lagoon

Nehmen wir an, wir stehen am firstView gehen zum DetailView und wollen Daten von firstView an Detailview übergeben. Um dies mit Storyboard zu tun, haben wir auf firstView eine Methode:

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
    }
}

und dann in die Klasse von DetailView haben wir eine Variable deklariert:

var toPass: String!

dann können Sie die Variable toPass verwenden (natürlich können Sie den Typ der Variablen nach Belieben ändern, in diesem EX-Demo muss ich nur den String-Typ angeben). 

37
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)
}
20
fuzz

String oder beliebige Daten von einem Controller an einen anderen in Swift übergeben.

Folge den folgenden Schritten:

1) Erstellen Sie eine Eigenschaft im untergeordneten Controller als var abc:string!

2) Objekt des Childcontrollers erstellen 

let storyboard:UIStoryboard()
let viewController: childcontroller = storyboard.instantiateViewControllerWithIdentifier("childcontroller") as! childcontroller
viewController.abc = "hello";
self.navigationController.pushviewController(Controller:viewController animated:true CompletionHandler:nil)
3
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
            }
        }
    }

// In MusicVC erstellen Sie einen String wie:

 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

String oder beliebige Daten von einem Controller an einen anderen in Swift übergeben.

Folge den folgenden Schritten:

1) Erstellen Sie eine Variable vom Typ, die Sie möchten (String, Int) Var test: String!

2) Objekt des Childcontrollers erstellen

 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)

Das sollte dein Problem lösen

0
Vishal