2016-08-10 17 views
0

私はiPadの画面を持っています:Swift iPad - ボタンが動作しない

1)ボタンの位置を変更すると、クリックできません。 2)円形ボタンの画像が伸びています。

以下の画面でボタンセットを作成する必要があります。

My screen

私はボタンセットを作成するには、次のコードを使用しています。

class MyCommonViewController: UIViewController { 

    var button: UIButton? 
    var Circularbutton: UIButton? 

override func viewDidLoad() { 
     super.viewDidLoad() 

     var xMargin:CGFloat = 20.0 
     var yTopMargin:CGFloat = 40.0 
     var CircularBtnxMargin:CGFloat = 180.0 
     var CircularBtnyTopMargin:CGFloat = 200.0 

     var i = 1  

     let TextArray = ["Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"] 

     for index in 1...6 
     { 
      button = UIButton() 
      button?.tag=index 
      var buttonFrame = self.view.frame 
      buttonFrame.origin.x += xMargin 
      buttonFrame.origin.y += yTopMargin 
      buttonFrame.size.width = 200 
      buttonFrame.size.height = 200 

      button?.frame = buttonFrame 
      button?.layer.cornerRadius = 15.0    
      button?.layer.zPosition = 10 

      button?.backgroundColor = UIColor.lightGrayColor()    

      button?.setTitle(TextArray[index-1], forState: UIControlState.Normal)    
      button?.addTarget(self, action: #selector(MyCommonViewController.BigButtonTouched), forControlEvents: UIControlEvents.TouchUpInside) 

      self.view.addSubview(button!) 


      Circularbutton = UIButton() 
      var CbuttonFrame = self.view.frame   

      CbuttonFrame.origin = CGPoint(x:CircularBtnxMargin, y:CircularBtnyTopMargin) 
      CbuttonFrame.size.width = 50 
      CbuttonFrame.size.height = 50   

      Circularbutton?.frame = CbuttonFrame 


      Circularbutton?.tag=index 
      Circularbutton?.layer.zPosition = 100 


      let image = UIImage(named: "que2.png") as UIImage? 
      Circularbutton?.setImage(image, forState: UIControlState.Normal) 
      Circularbutton?.addTarget(self, action: #selector(MyCommonViewController.questionButtonPressed), forControlEvents: UIControlEvents.TouchUpInside) 


      self.view.addSubview(Circularbutton!) 

      xMargin+=250.0 
      CircularBtnxMargin+=250.0 
      i+=1 

      if(i > 3) 
      { 
       yTopMargin+=300.0 
       xMargin=20.0 
       CircularBtnyTopMargin+=300.0 
       CircularBtnxMargin=180.0 
       i=1 
      } 
     } 

    } 

} 

1)ただし、疑問符の付いたボタンは、最初の2つのボタンを除いてクリックできません。

2)私の第二の問題は、円形ボタンの画像が粗い不均一な境界線を表示していることです。

お手伝いできますか?

編集:

func questionButtonPressed(sender:UIButton!) { 

let btn:UIButton = sender 

print("Circular Button Pressed - \(btn.tag)") 
} 


func BigButtonTouched(sender:UIButton!) { 

let bigBtn:UIButton = sender 

print("Button Pressed - \(bigBtn.tag)") 

} 
+0

インデックスは1〜6です。私はそれが配列のインデックスであるので、0から5までループする必要があると思います。 – Almazini

+0

あなたのコンテンツを共有できますか:questionButtonPressed func? –

+0

@RoyK - questionButtonPressedとBigButtonTouchedの質問に機能コードを追加しました。 – dang

答えて

0

がループのためではない外の、forループの各反復のボタンを宣言します。コードを参照してください(すべての強制的なアンラップを削除する必要があります)。

class MyCommonViewController: UIViewController { 

override func viewDidLoad() { 
     super.viewDidLoad() 

     var xMargin:CGFloat = 20.0 
     var yTopMargin:CGFloat = 40.0 
     var CircularBtnxMargin:CGFloat = 180.0 
     var CircularBtnyTopMargin:CGFloat = 200.0 

     var i = 1  

     let TextArray = ["Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"] 

     for index in 1...6 
     { 
      let button = UIButton() 
      button?.tag=index 
      var buttonFrame = self.view.frame 
      buttonFrame.origin.x += xMargin 
      buttonFrame.origin.y += yTopMargin 
      buttonFrame.size.width = 200 
      buttonFrame.size.height = 200 

      button?.frame = buttonFrame 
      button?.layer.cornerRadius = 15.0    
      button?.layer.zPosition = 10 

      button?.backgroundColor = UIColor.lightGrayColor()    

      button?.setTitle(TextArray[index-1], forState: UIControlState.Normal)    
      button?.addTarget(self, action: #selector(MyCommonViewController.BigButtonTouched), forControlEvents: UIControlEvents.TouchUpInside) 

      self.view.addSubview(button!) 


      let Circularbutton = UIButton() 
      var CbuttonFrame = self.view.frame   

      CbuttonFrame.origin = CGPoint(x:CircularBtnxMargin, y:CircularBtnyTopMargin) 
      CbuttonFrame.size.width = 50 
      CbuttonFrame.size.height = 50   

      Circularbutton?.frame = CbuttonFrame 


      Circularbutton?.tag=index 
      Circularbutton?.layer.zPosition = 100 


      let image = UIImage(named: "que2.png") as UIImage? 
      Circularbutton?.setImage(image, forState: UIControlState.Normal) 
      Circularbutton?.addTarget(self, action: #selector(MyCommonViewController.questionButtonPressed), forControlEvents: UIControlEvents.TouchUpInside) 


      self.view.addSubview(Circularbutton!) 

      xMargin+=250.0 
      CircularBtnxMargin+=250.0 
      i+=1 

      if(i > 3) 
      { 
       yTopMargin+=300.0 
       xMargin=20.0 
       CircularBtnyTopMargin+=300.0 
       CircularBtnxMargin=180.0 
       i=1 
      } 
     } 

    } 

} 
+0

私はforループの各反復でボタンを宣言しようとしましたが、それでも効果はありません。開始ボタンを除く円形ボタンはクリックできません – dang

関連する問題