2014-07-19 7 views
7

मैं उपयोगकर्ता को टैप करने के बाद अपने बटन को हाइलाइट करना चाहता हूं। यदि उपयोगकर्ता फिर से बटन को टैप करता है तो मैं इसे डी-चयनित/अनहेलाइट बनना चाहता हूं। मुझे यकीन नहीं है कि इसे तेजी से करने के बारे में कैसे जाना है। मैं वर्तमान में इंटरफ़ेस बिल्डर का उपयोग कर बटन। हाइलाइट छवि और चयनित छवि को उसी .png पर सेट कर रहा हूं।यूआईबटन को स्पर्श/स्पर्श के बाद हाइलाइट किया गया

जब मैं ऐप चलाता हूं और बटन टैप करता हूं, तब तक यह मेरी हाइलाइट छवि में बदल जाता है जब तक कि मेरी उंगली बटन पर न हो। कोड नीचे

उत्तर

25

उपयोग चर उदाहरण

//write this in your class 
var isHighLighted:Bool = false 


override func viewDidLoad() { 

    let button = UIButton(type: .system) 

    button.setTitle("Your title", forState: UIControlState.Normal) 
    button.frame = CGRectMake(0, 0, 100, 44) 

    self.view.addSubview(button as UIView) 

    button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 

} 

func buttonClicked(sender:UIButton) 
{ 
    dispatch_async(dispatch_get_main_queue(), { 

     if isHighLighted == false{ 
      sender.highlighted = true; 
      isHighLighted = true 
     }else{ 
      sender.highlighted = false; 
      isHighLighted = false 
     } 
    }); 
} 

मैं चयनित राज्य के बजाय selected राज्य highlighted नीचे कोड demonstarate उपयोग करने के लिए सिफारिश के रूप में isHighLighted घोषित

override func viewDidLoad() { 

    let button = UIButton(type: .system) 

    button.setTitle("Your title", forState: UIControlState.Normal) 
    button.frame = CGRectMake(0, 0, 100, 44) 

    self.view.addSubview(button as UIView) 
    //set normal image 
    button.setImage(normalImage, forState: UIControlState.Normal) 
    //set highlighted image 
    button.setImage(selectedImage, forState: UIControlState.Selected) 

    button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 

} 

func buttonClicked(sender:UIButton) 
{ 
     sender.selected = !sender.selected; 
} 
+0

के साथ हाइलाइट करता है, मुझे नहीं लगता कि आपने कोड में "isHighLigthed" घोषित किया है। मैं देखता हूं कि आप "isHighLighted" के मूल्य की जांच कर रहे हैं, लेकिन जहां आप वास्तव में इसे घोषित नहीं करते हैं – dcbenji

+1

'कक्षा एबीसी {'line' var isHighLighted: Bool = false' के बाद इसे घोषित करें। यह सही काम करेगा – codester

+0

@ user3822654 आप वैन भी चुनते हैं राज्य के रूप में व्यवहार करने के लिए अधिक उपयोग किया जाता है। आपको 'चयनितस्टेट' के लिए दो सामान्य छवियों को 'सामान्यस्टेट' के लिए सेट करने की आवश्यकता है। उम्मीद है कि यह – codester

3
func highlightButton(button: UIButton) { 
     button.highlighted = true 
} 

@IBAction func touched(sender: UIButton) { 
    let timer = NSTimer.scheduledTimerWithTimeInterval(0.0, target: self, selector: Selector("highlightButton(sender)"), userInfo: nil, repeats: true) 
} 
+0

सका आप स्विफ्ट में एक उदाहरण प्रदान करते हैं? – dcbenji

+0

ओह क्षमा नहीं किया था कि आप इसे स्विफ्ट – Bas

+0

में अपना प्रश्न संपादित करना चाहते हैं। – Bas

2
func buttonPressed(_ sender: UIButton) { 

    // "button" is a property 

    if button.isSelected { 
     button.setImage(UIImage(named: "filled-heart"), for: .normal) 
     button.isSelected = false 
    }else { 
     button.setImage(UIImage(named: "empty-heart"), for: .selected) 
     button.isSelected = true 
    } 
} 
संबंधित मुद्दे