2015-11-04 62 views
2

我想創建一個應用程序,它在屏幕頂部的標籤上顯示一些數據,然後下半部分左右是允許選擇表格中的項目的表格彈出另一個編輯值。我努力通過用戶選擇列表上的項目來調用didSelectRowAtIndexPath。我已經把視圖控制器的代碼放在下面。沒有調用我的didSelectRowAtIndexPath函數

我搜索了很多,至今沒有發現任何解釋我所看到的問題的東西。

我想我已經把代碼和數據源的所有東西連接起來了,而且我沒有使用任何手勢捕獲,所以不是那些。有沒有人有任何想法?

我附加了視圖控制器連接和屬性檢查器設置的屏幕截圖。

Connections screengrab

Attributes screengrab

import UIKit 

class TemperatureViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 
    @IBOutlet weak var CurrentTemp: UILabel! 
    @IBOutlet weak var HeaterStatus: UILabel! 
    @IBOutlet weak var ChillerStatus: UILabel! 
    @IBOutlet weak var TempTableView: UITableView! 

    var settings = [TemperatureSettings]() 

    var HeaterTemp:Float = 0.0 
    var ChillerTemp:Float = 0.0 
    var ThresholdTemp:Float = 0.0 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     self.loadTempSettings() 
     TempTableView.delegate = self 
     TempTableView.dataSource = self 
     TempTableView.allowsSelection = true 
     TempTableView.editing = false 
    } 

    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 

     self.loadTempSettings() 

    } 

    func loadTempSettings() { 


     let TempSetting1 = TemperatureSettings(name: "Heater On at", CurrentSetting: HeaterTemp)! 

     let TempSetting2 = TemperatureSettings(name: "Chiller On at", CurrentSetting: ChillerTemp)! 

     let TempSetting3 = TemperatureSettings(name: "Threshold", CurrentSetting: ThresholdTemp)! 

     settings = [TempSetting1, TempSetting2, TempSetting3] 

     TempTableView.reloadData() 

     //refreshControl?.endRefreshing() 

    } 

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

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

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

     // Stop spoof separators after the table entries for blank entries 
     tableView.tableFooterView = UIView(frame: CGRect.zeroRect) 

     // Turn off the separator for each cell. 
     tableView.separatorStyle = UITableViewCellSeparatorStyle.None 

     let cellIdentifier = "TemperatureSettingsTableViewCell" 

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

     let setting = settings[indexPath.row] 

     cell.SettingNameLabel.text = setting.name 
     cell.SettingCurrentLabel.text = String(format: "%.1f C", setting.CurrentSetting) 
     cell.SettingCurrentLabel.textAlignment = .Left 

     // Configure the cell... 

     //useTimer = true 

     return cell 
    } 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     print("Setting Row \(indexPath.row) clicked") 
     performSegueWithIdentifier("Settings", sender: self) 

    } 


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


} 
+0

只需添加,數據就會填充到表格中,以便部件正在工作,而不是用戶交互。 –

+0

您的tableView是否正確繪製,並且該行未被選中?你檢查過你的tableView selectionMode嗎? – Nanoc

+0

您的UITableViewDelegate是否已在您的UITableView中正確設置並且選擇模式爲單選? –

回答

0

這個工作對我來說:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    print("works"); 
} 

func也許之前添加越權?

+0

不幸的是,Xcode告訴我「方法dos不會覆蓋任何方法從它的超類」可能是因爲它是我用作基礎的ViewController類。 –

+0

您使用的是什麼版本的Xcode? – Led

+0

我正在使用V7.0測試版4我要下載7.2並查看會發生什麼,但我不確定它是否是Xcode中的錯誤 –