2014-06-20 17 views
19

Sto provando il nuovo linguaggio di apple swift in Xcode 6 beta. Sto provando a cambiare le visualizzazioni a livello di codice quando viene premuta una cella di visualizzazione tabella, anche se tutto ciò che fa è sollevare uno schermo nero vuoto. Nel mio codice, ho commentato le cose che non funzionavano. Avrebbero semplicemente fatto crollare il simulatore iOS. il mio codice:Passaggio a livello di programmazione rapido swift

// ViewController.swift 
// Step-By-Step Tip Calculator 
// Created by Dani Smith on 6/17/14. 
// Copyright (c) 2014 Dani Smith Productions. All rights reserved. 

import UIKit 
var billTotalPostTax = 0 
class BillInfoViewController: UIViewController { 

//outlets 
@IBOutlet var totalTextField: UITextField 
@IBOutlet var taxPctLabel: UILabel 
@IBOutlet var resultsTextView: UITextView 
@IBOutlet var taxPctTextField : UITextField 

//variables 
var billTotalVar = "" 
var taxPctVar = "" 

//actions 
override func viewDidLoad() { 
    super.viewDidLoad() 
    refreshUI() 
} 

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

@IBAction func stepOneNextPressed(sender : AnyObject) 
{ 
    billTotalVar = totalTextField.text 
    taxPctVar = taxPctTextField.text 
} 

@IBAction func calculateTipped(sender : AnyObject) 
{ 
    tipCalc.total = Double(totalTextField.text.bridgeToObjectiveC().doubleValue) 
    let possibleTips = tipCalc.returnPossibleTips() 
    var results = "" 
    for (tipPct, tipValue) in possibleTips 
    { 
     results += "\(tipPct)%: \(tipValue)\n" 
    } 

    resultsTextView.text = results 
} 
/* 
@IBAction func taxPercentageChanged(sender : AnyObject) 
{ 
    tipCalc.taxPct = String(taxPctTextField.text)/100 
    refreshUI() 
}*/ 

@IBAction func viewTapped(sender : AnyObject) 
{ 
    totalTextField.resignFirstResponder() 
} 

let tipCalc = TipCalculatorModel(total: 33.25, taxPct: 0.06) 

func refreshUI() 
{ 
    //totalTextField.text = String(tipCalc.total) 

} 
} 

class RestaurantTableViewController: UITableViewController 
{ 
override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) 
{ 
    let row = indexPath?.row 
    println(row) 
    //let vc:BillInfoViewController = BillInfoViewController() 
    //let vc = self.storyboard.instantiateViewControllerWithIdentifier("billInfo") as UINavigationController 

    //self.presentViewController(vc, animated: true, completion: nil) 
} 
} 

Grazie mille per tutto il vostro aiuto.

risposta

23

Ho appena capito. Ho dovuto fare

let vc = self.storyboard.instantiateViewControllerWithIdentifier("billInfo")` 

di essere

let vc : AnyObject! = self.storyboard.instantiateViewControllerWithIdentifier("billInfo") 

mettere a tacere un avvertimento. Ho quindi cambiato presentViewController a showViewController e ha funzionato. Qui è la mia classe completato:

class RestaurantTableViewController: UITableViewController 
{ 
    override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) 
    { 
     let row = indexPath?.row 
     println(row) 
     let vc : AnyObject! = self.storyboard.instantiateViewControllerWithIdentifier("billInfo") 
     self.showViewController(vc as UIViewController, sender: vc) 
    } 
} 
10
let vc = self.storyboard.instantiateViewControllerWithIdentifier("billInfo") as! BillInfoViewController 
self.presentViewController(vc, animated: true, completion: nil) 

LE: abbattuto aggiunto

Problemi correlati