如何在 Xcode 的另一个屏幕上完成某个操作时更改按钮的状态?
Posted
技术标签:
【中文标题】如何在 Xcode 的另一个屏幕上完成某个操作时更改按钮的状态?【英文标题】:How to change the state of a button when an action is completed on another screen in Xcode? 【发布时间】:2011-11-24 22:46:52 【问题描述】:当游戏本身达到一定数量的分数时,我将如何更改关卡选择屏幕上的按钮状态?基本上,我希望通过获得一定数量的分数,在与我获得分数的游戏屏幕不同的屏幕上完成关卡时出现一个按钮。我希望它几乎就像在愤怒的小鸟中一样。我已经对关卡进行了编程,以便在完成时从关卡选择屏幕和上一个关卡打开。
【问题讨论】:
【参考方案1】:如果可变按钮屏幕是不同的一组文件或不同的XIB,那么你可以调用自定义的-(id)init
方法来获取分数的int或字符串。
类似:
//.h
int passedScore;
//.m
-(id)initwithscore:(int)score
if (self = [super init])
passedScore = score;
然后当你转换到新视图时,调用
[newview alloc]initwithscore://score int]autorelease];
然后,查看分数是大于还是小于给定常数就很简单了。
if(//scoreint >= //const)
// do stuff
【讨论】:
当我将您给我的代码输入到应用程序中时,它说存在自动引用计数问题:接收者类型 'new view' 例如消息未声明带有选择器“initwithscore”的方法。这是什么意思? 这意味着你没有#import 'new view' @class 'new view';并指向新的观点。 抱歉这些问题,但我相信我已经完成了所有这些,但它仍然显示 ARC 问题。 你声明了 -(id)initwithScore:(int)score;在 .h 文件中? 是的,我在 .h 文件中声明了该方法。我意识到您需要在两个文件中声明它,所以我做了,现在它在与以前相同的位置显示:“未使用的表达式结果”。我在两个块中都有相同的代码,除了 'newview.m' 文件中的 If - If 语句和[newview alloc]
具有另一个视图的名称。我想不通。怎么回事?!以上是关于如何在 Xcode 的另一个屏幕上完成某个操作时更改按钮的状态?的主要内容,如果未能解决你的问题,请参考以下文章