我在一項簡單的任務中遇到了困難。我用谷歌搜索了這個主題,但其他示例由于我還不理解的附加語法而變得復雜。如果已經有類似的主題,你能幫我解決它或給出鏈接嗎?
我需要將負責選擇按鈕的函式移動到一個單獨的檔案中,因為如果按鈕的數量增加,它將變成一個大表。所以在單獨的swiftfile中創建了一個函式,但是新檔案自然不知道viewController中的任何按鈕并且在范圍內找不到它。另外,如果我沒記錯的話,我需要給出 Bool 并回傳 String。
如何將帶有按鈕發送器的函式傳輸到單獨的檔案,以便它在 ViewController 中回傳非可選文本值?
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Label1: UILabel!
@IBOutlet weak var BTC: UIButton!
@IBOutlet weak var ETC: UIButton!
@IBOutlet weak var LTC: UIButton!
var choice = "Choose coin"
var coinType = getCoinType()
@IBAction func optionSelected(_ sender: UIButton) {
BTC.isSelected = false
ETC.isSelected = false
LTC.isSelected = false
sender.isSelected = true
if BTC.isSelected == true{
ETC.isSelected = false
LTC.isSelected = false
choice = "BTC"
Label1.text = choice
}else if ETC.isSelected == true{
BTC.isSelected = false
LTC.isSelected = false
choice = "ETC"
Label1.text = choice
}else if LTC.isSelected == true{
ETC.isSelected = false
LTC.isSelected = false
choice = "LTC"
Label1.text = choice
}
}
}
新檔案,我不明白如何從此處的按鈕獲取發件人
import Foundation
func getCoinType() -> String{
var choice: String
// my if else function
return choice
}
PS一般來說,不使用UIPickerView是否可以讓它變得更容易?
uj5u.com熱心網友回復:
關于如何在不同的 swift 檔案中添加函式,您有幾個選項。這是一個簡單的:創建一個新的 swift 檔案并將其命名為 ViewController Extenstions.swift(盡管您可以使用任何名稱)。然后將擴展添加到您的 ViewController 類并添加您的函式,如下所示:
extension ViewController {
func getCoinType() -> String {
var choice: String
// my if else function
return choice
}
}
您可以根據需要在不同的檔案中添加任意數量的函式(ViewController 的所有擴展名,但當然具有不同的檔案名)。
PS,在您的 optionSelected 功能中,您正在設定:
BTC.isSelected = false
ETC.isSelected = false
LTC.isSelected = false
我不知道您要達到什么目的,但是這樣做,那些 if-else 將永遠不會執行,因為您將三個按鈕設定為未選中!
更新: 對于您的按鈕選擇問題,您可以這樣做:
1- 為您的按鈕添加標簽 您可以在 viewDidLoad 方法中執行此操作。這樣您就可以區分不同的按鈕。
override func viewDidLoad() {
super.viewDidLoad()
BTC.tag = 0
ETC.tag = 1
LTC.tag = 2
}
2- 連接按鈕的動作 雖然您的三個按鈕可以有三個不同的處理函式,但將它們全部連接到一個處理程式會更容易。但是,我們可以根據我們在上一步中分配的標簽的值知道點擊了哪個按鈕。因此,通過 Storyboard 將所有按鈕連接到 optionSelected(_ sender: UIButton) (因為您使用過 Storyboard.
3- 重寫 getCoinType 函式
func getCoinType(tag: Int) -> String? {
var choice: String?
switch tag {
case 0:
choice = "BTC"
case 1:
choice = "ETC"
case 2:
choice = "LTC"
default:
choice = nil
}
return choice
}
按鈕的處理程式 現在,當一個按鈕被點擊時,我們呼叫 getCoinType 函式,將該按鈕的標簽作為輸入引數。它將回傳字串,我們將其分配給 Label1:
@IBAction func optionSelected(_ sender: UIButton) {
let choice = getCoinType(tag: sender.tag)
Label1.text = choice
}
你完成了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484907.html
上一篇:從函式回傳兩個物件
下一篇:如何隨機排列元素?
