2016-10-28 3 views
4

원래 코드가 작동하고있었습니다.Swift 3에서 UIButton의 이미지를 설정하는 방법은 무엇입니까?

IBAction func clickedon(_ sender: UIButton) { 

    if(gamestate[sender.tag] == 0 && gameisactive == true){ 

     gamestate[sender.tag] = activeplayer 

    if (activeplayer == 1){ 
     print("working") 
     sender.setImage(UIImage(named:"Cross.png"), for: UIControlState()) <----------- 
     activeplayer = 2 
    } 
    else { 
     print("working2") 
     sender.setImage(UIImage(named:"Nought.png"), for: UIControlState()) <----------- 
     activeplayer = 1 

    } 
    } 

이미지를 설정하는 두 가지 코드가 작동했습니다. 이 버튼들은 아무것도 설정하지 않았습니다. 버튼을 클릭하면 해당 이미지로 전환해야합니다. 이러한 이미지는보기 컨트롤러가있는 폴더에 있습니다. 왜 그들이 일을 그만 두지 못했습니다. 다른 모든 코드를 주석으로 처리하여 문제가 될 수 있는지는 알 수 있지만 문제는 아닌 것 같습니다. 두 경우 모두 print 문이 인쇄됩니다. 아무 것도하지 않는 것 같은 이미지입니다. 오류가 없으며 아무것도 수행하지 않습니다.

UIControlState() 코드를 실제로 이해하지 못합니다. 나는 같은 코드를 가지고있는 온라인 프로젝트를 흉내 내고있다. 정말 이상합니다. 의견이 있으면 알려주세요.

+0

조이 (Joey)가 지적한 것 이외의 구문이 정확한 것처럼 보입니다. 그 시점에서 나는 그 줄을 "깨뜨릴"것을 제안 할 것입니다. 아마도 당신이 UIImages를 별도로 선언한다면이 문제는 드러날 것입니다. 나도 알다시피, 일들이 잘되었지만 어쩌면 문제가 다른 곳에서 일어난 것일 수 있습니다. 이 시점에서 나는 시스템에서 사용자 정의 또는 그 반대의 단추 유형을 변경해보십시오. – dfd

+0

요구 사항의 이미지를 게시하고 코드에서 달성 한 내용을 다른 사람이 도울 수 있습니다. – Vinodh

답변

1

코드에서 UIControlState()는 UIControlState.normal 또는 UIControlState.highlighted으로 바꿀 수 있습니다.

https://developer.apple.com/reference/uikit/uicontrolstate

IBAction func clickedon(_ sender: UIButton) { 

    if(gamestate[sender.tag] == 0 && gameisactive == true){ 

     gamestate[sender.tag] = activeplayer 

    if (activeplayer == 1){ 
     print("working") 
     sender.setImage(UIImage(named:"Cross.png"), for: UIControlState.normal) 
     sender.setImage(UIImage(named:"Cross_highlighted.png"), for: UIControlState.highlighted) 
     activeplayer = 2 
    } 
    else { 
     print("working2") 
     sender.setImage(UIImage(named:"Nought.png"), for: UIControlState.normal) 
     sender.setImage(UIImage(named:"Nought_highlighted.png"), for: UIControlState.highlighted) 
     activeplayer = 1 

    } 
} 
+0

감사합니다. 시도했지만 제대로 작동하지 않습니다. 참조를 살펴 보겠습니다. –

0

당신은 폭과 높이 제약 조건을 강요하고 있는가? 그렇지 않으면 버튼 안에 이미지가 없기 때문에 버튼이 퇴화 될 수 있습니다. 이미지를 설정할 때 프레임을 설정할 수도 있습니다. 나는 자동 레이아웃을 선호한다.

UIImage(named:"Cross.png")! 
    sender.setImage(image, for: .normal) 
    sender.frame.size = image.size 
4

IBAction를 (FUNC)를 clickedon (_ 보낸 사람 :있는 UIButton) {

if(gamestate[sender.tag] == 0 && gameisactive == true){ 

    gamestate[sender.tag] = activeplayer 

if (activeplayer == 1){ 
    print("working") 
    sender.setImage(UIImage(named: "Cross.png")!, forState: UIControlState.Normal) 
    sender.setImage(UIImage(named:"CrossSelected.png")!, forState: UIControlState.Selected) 

    activeplayer = 2 
} 
else { 
    print("working2") 
    sender.setImage(UIImage(named: "Nought.png")!, forState: UIControlState.Normal) 
    sender.setImage(UIImage(named:"NoughtSelected.png")!, forState: UIControlState.Selected) 
    activeplayer = 1 

} 
} 
0

나는 답을 알아 냈어. UIControlState.normal이 작동합니다. 문제는 버튼이 실제로 내 보드 아래에 배치된다는 것입니다. 이것은 내가 그들을 클릭 할 수 있다는 것을 의미했지만 그들은 나타나지 않을 것입니다.

인쇄 문과 모든 것이 오류없이 작동 한 이유를 설명합니다. 고맙습니다!

3

이 작업을 시도 할 수 있습니다 : 나는 다른 setImage 호출을 사용하지만 작동하지 않으려

let image = UIImage(named: "imagename.png") 
yourButton.setBackgroundImage(image, for: .normal) 

. 이미지를 표시하려면이 setBackgroundImage를 찾았습니다. 희망이 당신을 도울 것입니다.

0
self.button.setImage(UIImage(named: "namebutton"), for: .normal) 

스위프트 3의 버튼 이미지를 변경하려는 경우 내 솔루션을 시도해 볼 수 있습니다. 덕분에

관련 문제