2017-06-30 42 views
0

我想使用另一個按鈕來更改按鈕圖像。作爲這個按鈕的想法將按鈕重置爲其原始狀態以允許用戶再次玩。使用另一個按鈕設置按鈕圖像 - 斯威夫特

@IBAction func playAgainButton(_ sender: Any) { 
    grid = ["0", "3", "4", "5", "6", "7", "8", "9", "a"] 
    let btnCheckMarkImage = UIImage(cgImage: "Image-1" as! CGImage) 
    gridSpace0.setImage(btnCheckMarkImage, forState: UIControlState.Normal) 
    gameResultLabel.isHidden = true 
    //let image = UIImage(named: "blankSpace") 
} 

@IBAction func gridSpace0(_ sender: Any) { 
    let button = sender as! UIButton 
    checkIfFree(gridSpace: 0, sender: button) 
} 

func checkIfFree(gridSpace: Int, sender: UIButton) { 
    if(player % 2 != 0) 
    { 
     player = playerone 
     currentPlayerName = playerOneName 
    } 
    else 
    { 
     player = playertwo 
     currentPlayerName = playerTwoName 
    } 
    if(grid[gridSpace] != "1" && grid[gridSpace] != "2") 
    { 
     if(player == playerone) 
     { 
      let image = UIImage(named: "TicTacToeX") 
      grid[gridSpace] = String(player) 
      sender.setBackgroundImage(image, for: UIControlState.normal) 
      player = player + 1; 
     } 
     else 
     { 
      let image = UIImage(named: "TicTacToeO") 
      grid[gridSpace] = String(player) 
      sender.setBackgroundImage(image, for: UIControlState.normal) 
      player = player + 1; 
     } 

所以每一個按鈕被用戶按下的時間,空間進行檢查,看它是否是免費的,如果是,則改變了按鈕的圖像。

就像我說的,我想再次播放按鈕來改變gridSpace0按鈕的圖像,但是當我用上面的代碼我得到這個錯誤:enter image description here

我需要用戶的按鈕,以確定發件人部分哪個按鈕被按下,所以我怎樣才能改變它的背景?

感謝

+0

gridSpace0是一個函數,而不是一個按鈕。 Xcode甚至表明它是(Any) - >()。你想改變的按鈕的名稱是什麼? –

+0

當我'按鈕'按鈕到我給它的名字的Swift代碼時,我不知道是否有另一種方法來命名/找到它的名字 –

回答

3

gridSpace0是一個函數,所以你不能設置像這樣的。

@IBAction func gridSpace0(_ sender: Any) { 
    let button = sender as! UIButton 
    checkIfFree(gridSpace: 0, sender: button) 
} 

你需要你的按鈕,第一個鏈接到您的視圖控制器,然後設置按鈕,這樣enter image description here

+0

謝謝!因此,爲了清楚起見,當我將一個按鈕作爲一個動作掛鉤時,它只會在按下時調用該功能,而不會實際命名該按鈕。爲了允許我訪問和更改按鈕功能,我必須將其作爲插座連接。 –

+1

@AlexMarchant是的,您必須製作一個'IBOutlet'來控制按鈕的樣式,禁用,啓用,恢復等。對於'IBAction',它會被觸發取決於你的設置,通常是'Touch Up Inside' –