2015-06-20 61 views
2

我試圖實現一個簡單的步進器,它將其值反映到標籤上。 在使用「INT(sender.value)」我得到一個錯誤「不明確的利用價值」在實現UIStepper時模糊使用「值」

// ViewController.swift 
// Stepper 
// 
// Created by Prabhu Konchada on 19/06/15. 
// Copyright (c) 2015 Prabhu. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var StepperValue: UILabel! 

    @IBOutlet weak var OutputLabel: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

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


    @IBAction func StepperTap(sender: AnyObject) { 

     self.OutputLabel.text = String(Int(sender.value).description) 
    } 
} 
+0

爲什麼你要將值轉換爲Int? –

+0

@AshishKakkad我厭倦了沒有它,它成功構建,但引發此錯誤0x1947e2a08) libC++ abi.dylib:終止與未捕獲異常類型NSException (lldb)。所以我遵循這個教程http://www.ioscreator.com/tutorials/uistepper-tutorial-ios8-swift –

+0

@AshishKakkad我認爲問題是使用AnyObject而不是發件人:) –

回答

3

你可以這樣做如下:

@IBOutlet var lblStep: UILabel! 
@IBAction func stepPressed(sender: UIStepper) { 

    lblStep.text = sender.value.description 

} 

否則你必須AnyObject轉換爲UIStepper 等作爲

var stepControl : UIStepper = sender as! UIStepper 

像:

@IBAction func StepperTap(sender: AnyObject) { 
    var stepControl : UIStepper = sender as! UIStepper 
    self.OutputLabel.text = stepControl.value.description 
} 

整個代碼,你必須只更改爲與作爲6.1版本!對於6.3.2:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var lblStep: UILabel! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

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


    @IBAction func stepPressed(sender: AnyObject) { 

     var step : UIStepper = sender as UIStepper 

     lblStep.text = step.value.description 

    } 
} 
+0

2015-06-20 10:57:00.261步進器[19697:2335171] ***由於未捕獲的異常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey :]:這個類不是關鍵字Action的關鍵值編碼。「 ***第一擲調用堆棧: (0x1829902d8 0x1941640e4 0x18298ff5c 0x1837c9480 0x1828bb520 0x1877f07a0 0x1876ec384 0x1873d0a28 0x1873d0994 0x1873d71d0 0x1873d4880 0x180d9cd24 0x1874468ec 0x18765aa94 0x18765d208 0x18765b778 0x18b1a13c8 0x18294827c) 的libC++ abi.dylib:與類型的未捕獲的異常NSException (LLDB)終止 –

+0

第一種方法:拋出上述錯誤; –

+0

第二:AnyObject不能轉換爲UIStepper –

1

嘗試修改你的代碼是這樣的:

@IBAction func StepperTap(sender: UIStepper) { 

    self.OutputLabel.text = "\(sender.value)" 
} 
+0

它引發錯誤說:找不到成員'在裏面' ;無論如何,我可以知道'\'做什麼? –

+1

這裏的主要問題是'sender'變量的類型。當您創建IBAction時,您沒有選擇UIStepper,而是選擇AnyObject。 \\(sender.value)被稱爲字符串插值 - 它將sender.value的值插入到字符串中。使用sender.value.description會做同樣的事情。 – MirekE

+0

謝謝你的時間MirekE –