0

everyone!

So basically, I am trying to create a simple toggle out of my UIButton. With the code below, I am able to click the button, but only for a brief moment do I see @"Expense" as the title. It is probably a VERY simple mistake. Any help is appreciated!

- (IBAction)typeChanger {
if ([typeButton.titleLabel.text isEqual:@"Income"]) {
    typeButton.titleLabel.text = @"Expense";
}else if ([typeButton.titleLabel.text isEqual:@"Expense"]) {
    typeButton.titleLabel.text = @"Income";
}
}

Thanks in advance!

4

3 に答える 3

2

こうやって、

- (IBAction)typeChanger {
if ([typeButton.titleLabel.text isEqual:@"Income"]) {
   [typeButton setTitle:@"Expense" forState:UIControlStateNormal];
}else if ([typeButton.titleLabel.text isEqual:@"Expense"]) {
    [typeButton setTitle:@"Income" forState:UIControlStateNormal];
}
}
于 2013-02-26T04:40:20.233 に答える
2

これは非常に便利で便利な場合があります。これを試してみてください。

https://github.com/Brayden/UICheckbox

于 2013-02-26T06:40:54.163 に答える
0

isEqualToString:文字列比較の代わりにNSString のメソッドを使用isEqualします (どちらでも機能するはずですが、ドキュメントによると高速です)。

setTitle:forState:また、 a のタイトルを設定するために使用する必要がありますUIButton... 設定する 2 つの重要な状態は、UIControlStateNormal(押されていない) とUIControlStateHighlighted(押されている場合) です。

- (IBAction)typeChanger {
    if ([[typeButton titleForState:UIControlStateNormal] isEqualToString:@"Income"]) {
         [typeButton setTitle:@"Expense" forState:UIControlStateNormal];
         [typeButton setTitle:@"Expense" forState:UIControlStateHighlighted];

    } else if ([[typeButton titleForState:UIControlStateNormal] isEqualToString:@"Expense"]) {
         [typeButton setTitle:@"Income" forState:UIControlStateNormal];
         [typeButton setTitle:@"Income" forState:UIControlStateHighlighted];
    }
}

次のドキュメントも参照してくださいNSString

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html

そして上UIButton

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIButton_Class/UIButton/UIButton.html

于 2013-02-26T04:31:21.353 に答える