我正在Xcode中为一个类项目创建一个Connect Four类型的游戏,但遇到了一个helper函数。我在"游戏板"的每一列上方都有一个按钮,可以将棋子放入游戏中。该板本质上是一个7x6网格的UIImageView(无论这是否是我真正不关心的最实用的,它大约和我们在这节课上学到的一样多)。
我的助手功能:(在.h:NSString*imgString;UIImageView*prevImg;UIImageView*curImg;)
-(void) dropToken:(int) column
{
[ self checkTurn ];
for(int i=1; i<6; i++)
{
imgString = [ NSString stringWithFormat: @"img%d%d", i, column ];
curImg = (UIImageView*) imgString;
curImg.image = [ UIImage imageNamed: @"redpiece.png" ];
if(i != 6)
{
prevImg = curImg;
imgString = [ NSString stringWithFormat: @"img%d%d", i+1, column ];
curImg = (UIImageView*) imgString;
if(curImg.image == nil)
{
prevImg.image = nil;
curImg.image = curToken;
}
}
}
}
它应该将该列作为一个参数,然后转到相应的UIImageView,并将那里的图像设置为当前玩家令牌。
然而,我得到了:
-[__NSCFString setImage:]:无法识别的选择器发送到实例0x6b09ee0
在线:curImg.image=[UIMImage imageNamed:@"redpiece.png"];
我的打字有问题吗?还是我忽略了一些容易解决的问题?
Kevin在他的评论中有一个很好的观点,这句话永远不会奏效:
curImg = (UIImageView*) imgString;
我想你想做一些更像这样的事情:
imgString = [ NSString stringWithFormat: @"img%d%d", i, column ];
UIImageView* imgView = [UIImageView initWithImage:[ UIImage imageNamed: @"redpiece.png" ]];
这是我在这个页面上写的代码,所以它甚至可能不会编译,但想法是你需要用你创建的字符串创建UIImage来创建UIImageView。