如何使用按钮执行if语句?

时间:2013-07-23 19:47:20

标签: ios objective-c

我是Objective-C的新手并且正在逐步学习它,我对此有疑问。

例如,我制作了一个关于增加或减少数字的iPhone应用程序,默认数字设置为0.通过按向上,向下或重新启动按钮,您可以使用不同的命令选项。我想发挥if声明,例如。当标签号(0)等于五(5)有一个弹出框,或一个文字说“你已达到数字5”;这只是为了学习并能够在未来的应用或游戏中实现这一点。

ViewController.h

#import <UIKit/UIKit.h>

int Number;

@interface ViewController : UIViewController {
    IBOutlet UILabel *Count;
}

- (IBAction)Up:(id)sender;
- (IBAction)Down:(id)sender;
- (IBAction)Restart:(id)sender;

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()
@end

@implementation ViewController

- (IBAction)Up:(id)sender {
    Number = Number + 1;
    Count.text = [NSString stringWithFormat:@"%i", Number];
}

- (IBAction)Down:(id)sender {
    Number = Number - 1;
    Count.text = [NSString stringWithFormat:@"%i", Number];
}  

- (IBAction)Restart:(id)sender { 
    Number = 0; 
    Count.text = [NSString stringWithFormat:@"%i", Number];
} 

- (void)viewDidLoad {
    Number = 0;
    Count.text = [NSString stringWithFormat:@"%i", Number];

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

3 个答案:

答案 0 :(得分:0)

您可以添加方法:

- (void)checkNumber {
    if (Number == 5) {
        // show the alert
    }
}

然后在你的代码中:

-(IBAction)Up:(id)sender {
    Number = Number + 1;
    Count.text = [NSString stringWithFormat:@"%i", Number];

    [self checkNumber];
}

-(IBAction)Down:(id)sender {
    Number = Number - 1; 
    Count.text = [NSString stringWithFormat:@"%i", Number];

    [self checkNumber];
}

然后,了解命名约定,因为你的名字都错了(字母大写)。

答案 1 :(得分:0)

您只会在Up方法上点击5,因此请检查您的值。如果有人试图超过5,则显示UIAlertView。

   - (IBAction)Up:(id)sender{

        if (Number >= 5) {
            UIAlertView *alert = [[UIAlertView alloc ] initWithTitle:@"Sorry!" message:@"You can't go over five." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
        }
        else {
            Number = Number + 1;
            Count.text = [NSString stringWithFormat:@"%i", Number];
        }
    }

我正在使用UIAlertView在此处显示消息,但您可以使用UILabel或其他内容。


关于Objective-C约定的几点建议:

  1. 方法使用驼峰案例,并具有描述性名称。而不是Up,请使用incrementTestValue

  2. 之类的内容
  3. 变量名也使用驼峰案例。不是NumberCount,而是分别使用numbercountLabel。使用大写使它看起来像一个类名。

答案 2 :(得分:0)

看看这段代码。这将是如何在方法中使用返回值的一个很好的示例。我的方法叫做-(BOOL)isNumberGreaterThanOrEqualToFive;

-表示这是一个实例方法。 (BOOL)表示此方法返回BOOL(是/否)。 isNumberGreaterThanOrEqualToFive是方法的名称。它像这样使用

BOOL value = [self isNumberGreaterThanOrEqualToFive];
//value will either be YES or NO

看看

-(BOOL)isNumberGreaterThanOrEqualToFive {
    if (Number >= 5) {
        return YES;
    }
    return NO;
 }


-(IBAction)Up:(id)sender {
    if ([self isNumberGreaterThanOrEqualToFive]) {
        NSLog(@"Number is greater than or equal to 5");
        [self showAlertViewWithMessage:@"Number is 5 or more!"];
    } else {
        Number = Number + 1;
    }
}

关于Obj-C和一般编程的另一件事是称为分解,即将不相关的任务拆分为更小的更离散的相关任务。例如,您可以创建多个方法来完成一个特定任务,而不是在方法中包含一大块代码。您可以通过这种方式拆分显示AlertView的代码。例如:

-(void)showAlertViewWithMessage:(NSString *)messageText {
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:messageText delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
    [alert show];
}