Xcode 语句需要整数类型的表达式('NSArray*\uuuu\strong'无效)
下面是代码的第1部分Xcode 语句需要整数类型的表达式('NSArray*\uuuu\strong'无效),xcode,integer,nsarray,switch-statement,Xcode,Integer,Nsarray,Switch Statement,下面是代码的第1部分 menuItems = [[NSArray alloc]initWithObjects:@"page 1",@"page 2",@"page 3",@"page 4",@"page 5",@"page 6",@"page 7", nil]; for (int b=0;b<[menuItems count];b++) { UIButton *mybutton = [[UIButton alloc]initWithFrame:CGRectMake(3.0f, or
menuItems = [[NSArray alloc]initWithObjects:@"page 1",@"page 2",@"page 3",@"page 4",@"page 5",@"page 6",@"page 7", nil];
for (int b=0;b<[menuItems count];b++) {
UIButton *mybutton = [[UIButton alloc]initWithFrame:CGRectMake(3.0f, originofButtons, buttonWidth, buttonHeight)];
mybutton.backgroundColor = [UIColor redColor];
[mybutton setTag:b];
[mybutton setTitle:[menuItems objectAtIndex:b] forState:UIControlStateNormal];
[mybutton setSelected:false];
[mybutton addTarget:self action:@selector(buttonpress:) forControlEvents:UIControlEventTouchUpInside];
[m_scrollview addSubview:mybutton];
originofButtons += (buttonHeight + buttonseparator);
}
我无法让它切换。下面的代码在技术上是正确的,因为xcode没有显示错误。但它不会跑。然后xcode会给我错误信息:
[MainViewController按钮按下:]:发送到实例0x7fb5385c1c40 2014-12-13 23:09:37.705应用程序[13563:14150802]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[MainViewController按钮按下:]:发送到实例0x7fb5385c1c40的未识别选择器”*第一次抛出调用堆栈:
如果我使用下面的代码,我可以让它工作。所有@1,2,3,4,5等将具有相同的序列
-(void)buttonpress:(id)sender {
[self performSegueWithIdentifier:@"about" sender:self];
[self drawerAnimation];
}
我是一名OSX程序员,所以细节可能会有点不同,但基本上答案在你问题的标题中 在switch语句中,buttonpress必须是整数。另外,通过包含一个默认操作使switch语句详尽无遗也是一个好主意
-(void)buttonpress:(id)sender
{
NSInteger senderButton = [sender tag];
switch (senderButton)
{
case 0:
[self performSegueWithIdentifier:@"about" sender:self];
break;
case 1:
[self performSegueWithIdentifier:@"about" sender:self];
break;
case 2:
[self performSegueWithIdentifier:@"about" sender:self];
break;
case 3:
[self performSegueWithIdentifier:@"about" sender:self];
break;
case 4:
[self performSegueWithIdentifier:@"about" sender:self];
break;
default:
[self performSegueWithIdentifier:@"about" sender:self];
break;
}
}
我还假设该声明:
[self performSegueWithIdentifier:@"about" sender:self];
发送有效的选择器。否则,Xcode将无法捕捉到这一点。这将是一个运行时错误 哥们,太棒了!我已经和它斗争了好几个月了。我完全忽略了!为了寻找答案,我改变了密码50次,结果很简单,是的。segue发送一个有效的选择器。。。非常感谢。
[self performSegueWithIdentifier:@"about" sender:self];