首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CS193P -向iOS计算器添加取消按钮

CS193P -向iOS计算器添加取消按钮
EN

Stack Overflow用户
提问于 2012-01-29 03:58:47
回答 6查看 1.2K关注 0票数 2

我最近开始关注斯坦福大学在iTunes U上关于iPhone开发的在线课程。

我现在正在努力做前几节课的家庭作业。我跟随构建了一个基本计算器的演练,但现在我正在尝试第一个任务,但我似乎无法计算出它。它是如下所示:

添加一个“C”按钮,用于清除所有内容(例如,View中的显示、Model中的操作数堆栈、您在Controller中维护的任何状态等)。确保在显示屏上显示3 7 C5结果为5.您必须将API添加到您的模型中以支持此功能。

我需要添加什么接口?

我尝试了这样的东西:

代码语言:javascript
复制
- (IBAction)CancelPressed {
    self.Display.text = 0;
}

我知道这是不对的。我需要一些指导。如果这个问题很愚蠢,在advance..Sorry中谢谢你..

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-02-04 00:07:49

我还在iTunesU上浏览2011年秋季的版本。这是我完成这个任务的方法。

代码语言:javascript
复制
- (IBAction)clearPressed {
    self.display.text = @"0";
    self.userIsInTheMiddleOfEnteringANumber = NO;
    self.brain = nil;
}

唯一的问题是,我实际上不需要向我的模型添加API。因为控制器有一个CalculatorBrain实例变量,所以我把它去掉了,而且因为我们懒惰地实例化了我们的brain getter,所以下次调用getter时,我会得到一个全新的(已经清除)。

票数 2
EN

Stack Overflow用户

发布于 2012-08-11 05:58:46

下面是我是如何做到的:

CalculatorViewController.m中的代码:

代码语言:javascript
复制
//********************************************************
//
//This method is called when the user presses the Clear
//button (labeled "C").
//
//********************************************************

- (IBAction)clearPressed {
    self.historyDisplay.text = @"";         //Clear history label
    self.display.text = @"0";               //Reset calculator display label to 0
    _userIsInTheMiddleOfTypingANumber = NO; //Reset the user tracking feature
    [self.brain clearStack];                //Calls method to "clear" the stack

    //The following line may not be needed depended on your implementation of the
    //decimal button. You may need something for your decimal implementation.
    _userAlreadyEnteredDecimal = NO;        //Reset the decimal boolean 
}

然后在CalculatorBrain.m中:

代码语言:javascript
复制
//********************************************************
//
//"Clear" all values off of the stack.
//
//********************************************************
- (void)clearStack
{
    _operandStack = nil; //Deallocate instance of the stack
}
票数 3
EN

Stack Overflow用户

发布于 2012-01-29 08:51:34

你基本上想要重置你所有的变量。假设您使用的是UILabel,它将使用NSString,因此您将更好地使用:

代码语言:javascript
复制
self.display.text = @"0";

然后检查您拥有的所有其他属性和实例变量,然后将其设置为默认值。任何对象都希望设置为nil。例如,如果你在存储任何字符串。以及您保留的任何数字,设置为0。如果它们是浮点数,则为0.0f。

我不确定这个计算器的例子到底是什么,但希望这能帮你找到正确的方向。

如果没有,并且您需要更多帮助,请随时让我知道:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9048117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档