连接到数据源/委托时 UIPickerView 崩溃应用程序
Posted
技术标签:
【中文标题】连接到数据源/委托时 UIPickerView 崩溃应用程序【英文标题】:UIPickerView Crashing App when wired up to Datasource / Delegate 【发布时间】:2010-06-20 17:19:28 【问题描述】:从“Head First iPhone Development”一书中,为了让最简单的教程运行起来,我竭尽全力
有一个绑定到对象数组的 UIPickerView。就这些。它什么都不做,我想要它做的(现在)就是显示数组中的内容。我已经逐字按照书中的步骤进行操作,并且至少重新启动了 5 次。在我最近的尝试中,我发现了如何调试并添加了一些断点。
这是应用程序所能获得的
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
return 1;
如果我将该行更改为返回 0;该应用程序加载一个空的 UIPickerView。如果是一个,则应用程序在运行时会爆炸。
我已经验证了数组存在并且有数据 - 将 pickerview 设置为 0 个组件,我可以将数组中的任何行返回到标签。只有当我通过 IB 将pickerview 连接到数据源/委托时,它才会被炸毁。
真的在我的束缚的尽头,一直试图让它运行和关闭几个星期,并准备将 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”中插入一个空格,虽然书中没有 个空格。在(例如pickerView numberOfRowsInComponent)中放置一个空格使UIPickerView 工作,但它充满了问号而不是数组内容。书上好像有错别字。
【问题讨论】:
请向我们展示您的pickerView:titleForRow:forComponent:
或pickerView:viewForRow:forComponent:reusingView:
方法的代码(您实现的两者中的任何一个)。
【参考方案1】:
只是根据您的原始代码向大家澄清......
您的委托方法缺少空格:
- (NSInteger)pickerView:(UIPickerView *) pickerViewnumberOfRowsInComponent: ...
应该是:
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: ...
而您的其他委托方法省略了参数名称 pickerView:
- (NSString *)pickerView:(UIPickerView *) titleForRow: ...
应该是:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow: ...
【讨论】:
【参考方案2】:你想添加这个:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
return [activities objectAtIndex: row];
【讨论】:
谢谢,那已经在里面了 - 请参阅带有代码的更新帖子。【参考方案3】:您需要在pickerView
和numberOfRowsInComponent
之间留一个空格
(NSInteger)pickerView:(UIPickerView *) pickerViewnumberOfRowsInComponent : (NSInteger)组件
不幸的是,这是本书中的一个错字,但这个(以及其他错误)在 Head First iPhone 开发勘误表页面 (http://oreilly.com/catalog/errata.csp?isbn=9780596803544) 上被捕获。很抱歉让您头疼,希望您喜欢这本书。 -- 丹
【讨论】:
谢谢丹,我把它整理好了。空间问题是罪魁祸首,问号是一个足够简单的解决方法。我现在真的不记得问题是什么了,但没过多久就解决了。谢谢!【参考方案4】:刚刚看到您的更新 - 很高兴您发现了空间问题。至于问号,那(显然)不应该发生。您可以在设置活动数组的位置发布代码吗? -- 丹
【讨论】:
以上是关于连接到数据源/委托时 UIPickerView 崩溃应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中带有“外部”数据源和委托的 UIPickerView