2016-07-01 14 views
0

次のチュートリアルを使用して、テーブルに入力するいくつかの株価情報を表示しようとしました。私は、テーブルビューのセルとリンクされたstockTableViewCellとテーブルビューのセルの両方を作成しました。しかし、私はメインのストーリーボード上のテーブルビューをカスタムテーブルビューコントローラにリンクすることができません。Swift - テーブルビューにデータが入力されていないがエラーが表示されない

基本的に私はそれが適用されないカスタムクラスフィールドにそれを入力しようと、私は離れて移動するとき、それは

私の質問は消えるたびに、私のビューコントローラまたはテーブルビューのセルに何か問題があるか、ありますストーリーボードに誤って設定したことがありますか?

チュートリアル:https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson7.html

テーブルビューコントローラ

import UIKit 

class stocksTableViewController: UITableViewController{ 

    // Mark: Properties 

    var stocks = [stockData]() 
    let stock = stockinfo() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     loadSampleStockData() 

    } 

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

    func loadSampleStockData() { 

     var stock1: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "") 
     var stock2: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "") 
     var stock3: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "") 

     stock.getInfo("FB") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{ 
      stock1 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "FB")}) 
     } 

     stock.getInfo("MSFT") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{ 
      stock2 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "MSFT")}) 
     } 

     stock.getInfo("APPL") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{ 
      stock3 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "APPL")}) 
     } 

     stocks += [stock1, stock2, stock3] 
    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return stocks.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cellIdentifier = "stockViewCell" 

     let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! stockTableViewCell 

     let stock = stocks[indexPath.row] 

     cell.stockName.text = stock.name 
     cell.stockPercentage.text = stock.percentageChange 
     cell.stockDollarChange.text = stock.askPrice 
     cell.stockTicker.text = stock.stockTicker 

     return cell 
    } 
} 

テーブルビューセル

import Foundation 
import UIKit 

class stockTableViewCell: UITableViewCell { 

    // Properties 

    @IBOutlet weak var stockTicker: UILabel! 
    @IBOutlet weak var stockPercentage: UILabel! 
    @IBOutlet weak var stockName: UILabel! 
    @IBOutlet weak var stockDollarChange: UILabel! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization Code 
    } 

    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 
     // Configure the view for the selected state 
    } 
} 
+0

あなたは 'tableView.reloadData()'を呼び出すのですか? – vadian

+0

あなたはloadSampleStockData()を参照していますか、viewDidLoad()関数でそれを呼び出しましたか、それはあなたが求めているものではありませんか? –

+0

私は上記のコードを参照しています。 – vadian

答えて

0

ないあなたが持っている問題かわからを確認することができますが、どのようなカスタムクラスに入るしようとしていますか?ストーリーボード上のTableViewControllerをドラッグしない限り、stocksTableViewControllerと入力する必要があります。また、viewDidLoadでそのコメントを無視してセルを登録する必要はありません。

ここでは、あなたのストーリーボード上の1つのビューに2種類のビューコントローラを設定しようとしています。このコードをクラスdashboardViewControllerに入れてください。これは適切なトラックにつながります。接続するのを忘れないでくださいこのコードの実装時にtableViewプロパティのコンセント。

class dashboardViewController: DefaultViewController,  UITableViewDataSource, UITableViewDelegate { 

    @IBOutlet weak var tableView: UITableView! 
    @IBOutlet weak var balanceLabel: UILabel! 

    var stocks = [stockData]() 
    let stock = stockinfo() 

     override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.delegate = self 
    tableView.dataSource = self 
    loadSampleStockData() 
    user.newUser() // Move to login function when login and registration is implemented 

//Sets the Balance Label on Dashboard 
balanceLabel.text = "$" + String(format: "%.2f", user.getBalance()) 
    } 

func loadSampleStockData() { 

var stock1: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "") 
var stock2: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "") 
var stock3: stockData = stockData(name: "", askPrice: "", percentageChange: "", stockTicker: "") 

stock.getInfo("FB") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{ 
    stock1 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "FB")}) 
    } 

stock.getInfo("MSFT") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{ 
    stock2 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "MSFT")}) 
} 

stock.getInfo("APPL") {(name, price, change) in dispatch_async(dispatch_get_main_queue(),{ 
    stock3 = stockData(name: name, askPrice: price, percentageChange: change, stockTicker: "APPL")}) 
} 

stocks += [stock1, stock2, stock3] 
    } 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return stocks.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

let cellIdentifier = "stockViewCell" 

let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! stockTableViewCell 

let stock = stocks[indexPath.row] 

cell.stockName.text = stock.name 
cell.stockPercentage.text = stock.percentageChange 
cell.stockDollarChange.text = stock.askPrice 
cell.stockTicker.text = stock.stockTicker 

return cell 
    }` 
    } 
+0

どのTableViewを作成しようとしていますか?ダッシュボードにあるもの?ポートフォリオ?アドインまたはリーダーボードを追加しますか?また、これらのビューのすべてがViewControllerであるため、UITableViewControllerがカスタムクラスセクションに収まらない可能性があります。 – zsteed

+0

ダッシュボードに入力しようとしています。ああ私はそれが理にかなっていると思う。それを固定するにはどうすればいいですか?本当にありがとう、私はiOS開発の新人ですので、まだ基本を学んでいます。 Ps。ビューとビューコントローラを使用する方法は正しいですか? –

+0

更新されたコードは正しいパスに入れてください。 – zsteed

1
あなたが実際に のviewDidLoad()

Fであなたのcustomtableviewcellを登録する必要があり

urtherまた、あなたのプロジェクトを見ずに次のリンク

http://www.mysamplecode.com/2013/06/ios-custom-uitableviewcell-example.html

+0

ありがとう!私は開発がかなり新しいので、あなたが提供したリンクを読んでいますが、私のビューコントローラのviewDidLoad()に私のcustomtableviewcellを登録する方法についてはまだ少し失われています。あなたの助けをありがとう! –

+0

私はこれを使ってみました:tableView。クラスを登録するためにregisterClass(s​​tockTableViewCell、forCellReuseIdentifier: "stockViewCell")を呼び出すが、私はまだこの呼び出しを使用する方法を正確に把握しようとしています。 –

+0

リンクが@ MarkGong-Guy –

0

私はあなたのプロジェクトを見て、私はあなたを助けることができるいくつかのポイントました:

  1. あなたの検索フィールドのための出口を持っていませんが。 UISearchDisplayControllerを挿入しましたが、クラスAddStockViewControllerには接続していません。
  2. そして最も重要なのはUISearchDisplayerControllerです。これは、UISearchControllerまたはUISearchBarの使用をお勧めしません。

O/

+0

本当にありがとう、私は間違いなくこれらの変更を行います。私はあなたのプロジェクトを見て感謝して私にフィードバックを与えます! –

+0

問題なしman =) – GeraldoBastos

関連する問題