从“Head First iPhone开发”一书中撕下我的头发试图获得最简单的教程
有一个UIPickerView绑定到一个对象数组。就这些。它没有做任何事情,我想要它(现在)只是在数组中显示什么。我一字不漏地按照书中的步骤,重新开始至少5次。在我最近的尝试中,我发现了如何调试并添加了一些断点。
就应用程序而言
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
如果我改变该行返回0;应用程序加载空UIPickerView。如果它是一个,该应用程序在运行时会爆炸。
我已经验证了数组存在且有数据 - 将pickerview设置为0个组件我可以将数组中的任何行返回到标签。只有当我通过IB将选择器视图连接到数据源/代理时它才会被炸毁。
真的在我的系绳结束时,一直试图让它连续工作几周,并准备把macbook扔出窗外,用弩狩猎史蒂夫乔布斯。我感到特别愚蠢,这是本书中的第一个例子。任何帮助将非常感激。
更新:
这是代码
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *) pickerViewnumberOfRowsInComponent :
(NSInteger)component {
return [activities count];
}
- (NSString *)pickerView:(UIPickerView *) titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [activities objectAtIndex:row];
}
我刚尝试在'pickerViewnumberOfRowsInComponent'中插入一个空格,尽管书中有 no 空格。放入一个空格(例如pickerView numberOfRowsInComponent)使UIPickerView工作,但它充满了问号而不是数组内容。看起来好像这本书有拼写错误。
答案 0 :(得分:2)
根据原始代码澄清每个人......
您的委托方法缺少空间:
- (NSInteger)pickerView:(UIPickerView *) pickerViewnumberOfRowsInComponent: ...
应该是:
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: ...
你的另一个委托方法遗漏了参数名称pickerView:
- (NSString *)pickerView:(UIPickerView *) titleForRow: ...
应该是:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow: ...
答案 1 :(得分:0)
您想添加此内容:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [activities objectAtIndex: row];
}
答案 2 :(得分:0)
中的
pickerView
和numberOfRowsInComponent
之间需要一个空格
(NSInteger)pickerView:(UIPickerView *)pickerViewnumberOfRowsInComponent:(NSInteger)组件
不幸的是,这是本书中的一个拼写错误,但这个(以及其他错误)都记录在Head First iPhone开发勘误表页面(http://oreilly.com/catalog/errata.csp?isbn=9780596803544)上。抱歉头疼,希望你喜欢这本书。 - 丹
答案 3 :(得分:-1)
刚看到你的更新 - 很高兴你找到了空间问题。至于问号,(显然)不应该发生。你可以在设置活动数组的地方发布代码吗? - 丹