ios - passing - pasar de una pantalla a otra swift
Pasando datos entre los controladores de vista en Swift (7)
Nota: si estamos utilizando storyboard.
Paso 1: Controlador maestro:
// table row which row was selected
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
println("You selected cell #/(indexPath.row)!")
nextScreenRow = indexPath.row
// get to the next screen
self.performSegueWithIdentifier("dashboard_static_screen_segue", sender: self)
}
y entonces;
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "dashboard_static_screen_segue") {
var detailController = segue.destinationViewController as StaticScreens;
detailController.screenNumber = nextScreenRow
}
}// end prepareForSegue
paso 2: controlador de detalle (StaticScreen)
// set variable into your detail controller
var screenNumber: NSInteger?
println("selected row /(screenNumber!)")
Estoy tratando de convertir una aplicación de Objective-C a Swift pero no puedo encontrar cómo pasar datos entre vistas usando Swift. Mi código Objective-C es
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
AnsViewController *ansViewController;
ansViewController = [storyBoard instantiateViewControllerWithIdentifier:@"ansView"];
ansViewController.num = theNum;
[self presentViewController:ansViewController animated:YES completion:nil];
Lo que está haciendo es, básicamente, toma la variable, theNum, y la pasa a la variable, num, en un controlador de vista diferente. Sé que esta puede ser una pregunta fácil, pero me estoy confundiendo bastante con Swift, así que si alguien pudiera explicar cómo lo cambió a Swift, ¡eso sería muy apreciado!
Gracias
Para pasar cadena o cualquier dato de un controlador a otro de forma rápida.
Sigue los pasos a continuación:
1) Crea una propiedad en el controlador hijo como var abc:string!
2) Crear objeto de controlador infantil.
let storyboard:UIStoryboard()
let viewController: childcontroller = storyboard.instantiateViewControllerWithIdentifier("childcontroller") as! childcontroller
viewController.abc = "hello";
self.navigationController.pushviewController(Controller:viewController animated:true CompletionHandler:nil)
Para pasar cadena o cualquier dato de un controlador a otro de forma rápida.
Sigue los pasos a continuación:
1) Cree la variable de tipo que desee como (String, Int) var test: String!
2) Crear objeto de controlador infantil.
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)
Eso debería resolver tu problema.
Supongamos que estamos en la primera Vista, vaya a la Vista detallada y deseamos pasar los datos de la primera Vista a la Vista detallada. Para hacer eso con el guión gráfico, en firstView tendremos un método:
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
}
}
y luego en la clase de DetailView declaramos una variable:
var toPass: String!
luego puede usar la variable toPass
(por supuesto, puede cambiar el tipo de variable que desee, en esta EXI solo demo para el tipo de cadena).
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)
}
@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
}
}
}
// en MusicVC crear cadena como:
var strlablevalie:String!
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)
}