2015-08-06 5 views
2

enter image description hereКнопка кажется, только отключить после нескольких щелчков

@IBAction func topButton(sender: AnyObject) { 
    let nicebutton = sender as! UIButton 

    nicebutton.enabled = false 

    let nopebutton = nicebutton.superview?.viewWithTag(102) as! UIButton 
    nopebutton.enabled = true 

    let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView) 
    let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint) 
    let object = objectAtIndexPath(hitIndex) 
    object.incrementKey("count") 
    self.tableView.reloadRowsAtIndexPaths([hitIndex!], withRowAnimation: UITableViewRowAnimation.Automatic) 
    object.saveInBackground() 

} 


@IBAction func bottomButton(sender: AnyObject) { 

    let nopebutton = sender as! UIButton 

    nopebutton.enabled = false 

    let nicebutton = nopebutton.superview?.viewWithTag(101) as! UIButton 

    nicebutton.enabled = true 
    let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView) 
    let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint) 
    let object = objectAtIndexPath(hitIndex) 
    object.incrementKey("count", byAmount: -1) 
    self.tableView.reloadRowsAtIndexPaths([hitIndex!], withRowAnimation: UITableViewRowAnimation.Automatic) 
    object.saveInBackground() 

Я пытался изменить до метки, чтобы увидеть, если это почему, но увы, это не сделано много. Странно, что это происходит. Конечно, я бы предпочел, чтобы он был отключен после одного нажатия.

Edit - теги

enter image description here

+0

Эта установка работает для меня, если 'topButton' вызывается с помощью кнопки с тегом 101 и' bottomButton' вызывается кнопка с тегом 102. Уверены ли вы на 100%, что ваши тэги и IBActions подключены правильно? –

+0

Вы используете TouchUpInside? Возможно, другой тип события работает лучше в вашем сценарии, вы можете попробовать TouchDown ... Казалось, что нужно работать для http://stackoverflow.com/questions/10101253/hide-button-on-one-touch-itself – NullPointer

+0

@SteveWilford Я так считаю , обратите внимание на обновленное сообщение. –

ответ

0

насчет установки его программно? Кроме того, убедитесь, что вы используете touchUpInside при подключении вашего IBAction к нажатию кнопки.

// In your code, set these as the IBOutlets to your actual buttons 
var nice = UIButton() 
var nope = UIButton() 

enum MyButton { 
    case Nice 
    case Nope 
} 

func setAvailability(button: MyButton) { 
    nice.enabled = (button == .Nope) 
    nope.enabled = (button == .Nice) 
} 

Теперь, вы можете просто вызвать эту функцию в вас метод вызывает:

@IBAction func topButton(sender: AnyObject) { 
    setAvailability(.Nice) 
    // ...other stuff 
} 
+0

Я пробовал этот метод, и, хотя он не возвращал никаких ошибок, он не работал слишком хорошо. Похоже, что он должен работать, логика имеет смысл. –

+0

Каким образом он не работал? Также, возможно, попробуйте поместить '.enabled = ...' в фоновый поток, может быть, он не обновляет пользовательский интерфейс достаточно быстро? – Mark

Смежные вопросы