0

我是 Objective-C 的新手,并且正在一点一点地学习它,对此我有一个疑问。

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

视图控制器.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

视图控制器.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.
}
4

3 回答 3

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];
}

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

于 2013-07-23T19:58:11.460 回答
0

看看这段代码。这将是一个很好的例子,说明如何在方法中使用返回值。我的方法被称为-(BOOL)isNumberGreaterThanOrEqualToFive;

表示这-是一个实例方法。(BOOL) 表示此方法返回 BOOL (YES/NO)。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];
}
于 2013-07-23T21:01:29.760 回答
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. 变量名也使用驼峰式大小写。而不是Numberand Count,只需分别使用numberand countLabel。使用大写字母使它看起来像一个类名。

于 2013-07-23T20:03:07.540 回答