2015-08-29 6 views
0

Я хочу изменить числовое значение метки, нажав кнопку. Раньше я получал ошибки, говоря, что вы не можете поместить число в строку, поэтому я сделал строку (переменную). Теперь он отображает базовое число, 1, но когда я нажимаю на него, он не обновляется!Обновление целого числа в виде метки в swift

Вот как я установил переменную: Сначала я установил кнопку, чтобы IBAction. Вот код внутри него:

@IBOutlet weak var NumberOfExploits: UILabel! 
@IBAction func exploiter(sender: AnyObject) { 
    var hacks = 0 
    hacks += 1 
    NumberOfExploits.text = String(hacks) 
} 

Может кто-нибудь помочь узнать, как его изменить?

+0

переменная + = 1 за исключением второй строки? – SwiftStudier

ответ

3

Первое:

let используется для констант, то они не могут быть изменены. var используется для переменных.

Второе:

Ведение плюс один делается с += 1 или = myVariable + 1

var myVariable = 1 

myVariable += 1 
label.text = string(myVariable) 

Важно понимать, что ваши переменные жить только до тех пор, как класс вшита или функция жива. Поэтому, когда вы объявляете переменную, константа внутри функции (с использованием - это объявление), она исчезнет, ​​когда функция будет завершена. A UIViewcontroller существует до тех пор, пока вы этого хотите. Поэтому объявляйте вещи там, которые вам понадобятся позже.

import UIKit 

// things that live here are at the "global level" 


// this is a viewcontroller. It is a page in your app. 
class ViewController: UIViewController { 

    // things that live here are at the "class level" 

    var myClassCounter : Int = 0 

    // button in interfacebuilder that is connected through an outlet. 
    @IBOutlet weak var myButton: UIButton! 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // this is a function that gets called when the view is loaded 
    } 

    override func viewDidAppear(animated: Bool) { 
     // this is a function that gets called when the view appeared 

    } 


    // button function from interface builder 
    @IBAction func myButtonIsTouched(sender: AnyObject) { 
     // this will be destroyed when the function is done 
     var myFunctionCounter = 0 
     myFunctionCounter += 1 

     // this will be stored at class level 
     myClassCounter += 1 
    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

} 
+0

Большое вам спасибо! – benpete420

+0

np. не забудьте принять ответ;) –

+1

Если начальное присвоение переменной находится в IBAction, как говорит OP, значение будет только когда-либо. Эта переменная должна быть объявлена ​​на уровне класса. –

1

Вы также можете просто сделать

label.text = "\ (переменная)"

, который будет отображать число как текст.

0

Наиболее важным объявить переменную внутри класса, но вне любой функции

var variable = 1 

затем записать функцию IBAction таким образом

@IBAction func pressButton(sender : UIButton) 
{ 
    label.text = "\(++variable)" 
} 

Синтаксис ++variable увеличивает переменную на единицу.
Синтаксис "\(v)" создает строку всего, что представляет собой строку, представляющую

Смежные вопросы