2015-10-09 4 views
0

Как кнопка может нажимать другую кнопку. Я хочу знать, как нажимать кнопку2 и у вас есть кнопка1, чтобы завершить свою задачу и передать эту информацию на кнопку2. Я чувствую, что этот ответ очень прост, и любая помощь будет очень признательна.Кнопки вложения в Swift

@IBOutlet weak var textField1: UITextField! 

@IBOutlet weak var textField2: UITextField! 

@IBAction func button1(sender: AnyObject) { 
    var textAgeArray = ["1", "2", "3"] 
    let randomTextAge = Int(arc4random_uniform(UInt32(textAgeArray.count))) 
    let displayAge = textAgeArray[randomTextAge] 
    textField1.text = displayAge 
} 

@IBAction func button2(sender: AnyObject) { 
    textField2.text = displayAge 

} 
+0

Вы можете перемещать любые общие операции в separa а затем вызывать функцию из обоих действий, где вы можете выполнять любые дополнительные действия, относящиеся к конкретным действиям. Я надеюсь, что это имеет смысл ... – Alladinian

ответ

0

Вы используете эти кнопки, чтобы обновить конкретное текстовое поле при нажатии кнопки, поэтому поставили эту задачу внутри функции и затем вызвать эту функцию из любой кнопки. Если вы хотите отслеживать это, добавьте переменную, чтобы проверить, что представляет собой текущий текст. То, что вы пытаетесь сделать, может быть сделано таким образом, потому что вы не хотите нажимать кнопку, на которой вы хотите выполнить определенную задачу.

+0

Спасибо, ребята! Это действительно помогло и полностью решило проблему. Я знал, что это просто супер. Еще раз спасибо. – Will

+0

@Will Пожалуйста, отметьте как принятый ответ, если это решило вашу проблему :) –

+0

@ Вы можете перенести это или отметить это как принятый ответ, это может помочь другим. –

0

Как Mukesh suggested вы можете реорганизовать свой код с помощью отдельного метода повторяющегося кода.

Просто подумал, что отправлю альтернативное решение. Вы можете вызвать метод button1 изнутри button2:

@IBOutlet weak var textField1: UITextField! 
@IBOutlet weak var textField2: UITextField! 

var displayAge: String? 

@IBAction func button1(sender: AnyObject) { 
    var textAgeArray = ["1", "2", "3"] 
    let randomTextAge = Int(arc4random_uniform(UInt32(textAgeArray.count))) 
    displayAge = textAgeArray[randomTextAge] 
    textField1.text = displayAge 
} 
@IBAction func button2(sender: AnyObject) { 
    button1(sender) 
    textField2.text = displayAge 
} 

Обратите внимание, что вы должны взять переменную displayAge так, что метод button2 может получить к нему доступ. Это приведет к тому, что текст textField1 и textField2. Я не уверен, что это желаемый результат, поскольку я не могу сказать с вашего поста. Если вы хотите, чтобы они были разными случайными полями, я бы предложил вам реорганизовать его для повторного использования метода.

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

@IBOutlet var button1: UIButton! 

@IBAction func button1(sender: AnyObject) { 
    var textAgeArray = ["1", "2", "3"] 
    let randomTextAge = Int(arc4random_uniform(UInt32(textAgeArray.count))) 
    displayAge = textAgeArray[randomTextAge] 

    // if sender is this button, then update text, otherwise don't do anything 
    if sender.tag == 1 { 
     textField1.text = displayAge 
    } 
} 

По тегам по умолчанию является 0, но вы можете изменить их, установить их так: (Вы можете поместить это в viewDidLoad)

button1.tag = 1 

мая, а также добавить решение рефакторинга для полноты:

@IBOutlet weak var textField1: UITextField! 
@IBOutlet weak var textField2: UITextField! 

@IBAction func button1(sender: AnyObject) { 
    let displayAge = randomTextAge() 
    textField1.text = displayAge 
} 
@IBAction func button2(sender: AnyObject) { 
    let displayAge = randomTextAge() 
    // Uncomment the line below if you want to update textField1 with the same value 
    // textField1.text = displayAge 
    textField2.text = displayAge 
} 

func randomTextAge() -> String { 
    var textAgeArray = ["1", "2", "3"] 
    let randomTextAge = Int(arc4random_uniform(UInt32(textAgeArray.count))) 
    let displayAge = textAgeArray[randomTextAge] 
    return displayAge 
} 
Смежные вопросы