连接到Datasource / Delegate时UIPickerView崩溃应用程序

时间:2010-06-20 17:19:28

标签: iphone objective-c uipickerview

从“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工作,但它充满了问号而不是数组内容。看起来好像这本书有拼写错误。

4 个答案:

答案 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)

中的pickerViewnumberOfRowsInComponent之间需要一个空格

(NSInteger)pickerView:(UIPickerView *)pickerViewnumberOfRowsInComponent:(NSInteger)组件

不幸的是,这是本书中的一个拼写错误,但这个(以及其他错误)都记录在Head First iPhone开发勘误表页面(http://oreilly.com/catalog/errata.csp?isbn=9780596803544)上。抱歉头疼,希望你喜欢这本书。 - 丹

答案 3 :(得分:-1)

刚看到你的更新 - 很高兴你找到了空间问题。至于问号,(显然)不应该发生。你可以在设置活动数组的地方发布代码吗? - 丹