0

我是 xcode 和 iOS 编程的新手。我已遵循本教程: http ://www.thetutorialblog.com/cocoa-objective-c/creating-a-basic-ipad-application/

我让它与一个“- 按钮”、一个标签和一个“+ 按钮”一起工作。但我想要其中的多个,我已经添加了教程代码并像这样复制它:

IBOutlet UILabel *currentNumber2;

-(IBAction)incrementNumber2:(id)sender2;
-(IBAction)decrementNumber2:(id)sender2;


-(IBAction)incrementNumber2:(id)sender2 {
    number++;
    [currentNumber2 setText:[NSString stringWithFormat:@"%d", number]];
}


-(IBAction)decrementNumber2:(id)sender2 {
    number--;
    [currentNumber2 setText:[NSString stringWithFormat:@"%d", number]];
}

但是当我按下第一个 + 按钮时,它会在第一个标签中增加 +1,然后当我按下第二个 + 按钮时,它会继续从 label2 中的第一个按钮开始计数,所以它会输入 2。明白吗?

4

1 回答 1

0

这是面向对象编程的典型行为:该对象的number每个方法调用都共享单个实例。如果你想支持多个number实例,你有两个选择:向你的类添加更多实例变量,并在你创建更多实例时开始添加越来越多的代码,或者只是生成你的类的一个新实例。

请注意,您将很快做出有价值的认识:有时建模域与我们的应用程序域具有不同的对象需求(即您应该说“但我不应该制作更多我的实例UIViewController!!”,而您是对)。这是迈向 iOS深度支持的架构的第一步:模型-视图-控制器。在这种情况下number,您的模型应该与控制器分离,控制器应该能够处理任意数量的它们(不仅仅是您碰巧创建 ivars 的数量)。

这是一条很好的道路:-)

于 2012-08-31T07:08:39.647 回答