在 NSMutableArray 的末尾插入元素
Posted
技术标签:
【中文标题】在 NSMutableArray 的末尾插入元素【英文标题】:Insert element at NSMutableArray's end 【发布时间】:2013-04-16 10:26:31 【问题描述】:我正在从 Web 服务加载一个数组并将它们显示在选择器中,一切正常。我的数组包含每个问题类别的随机问题。现在我想要的是我想在数组末尾再添加一个条目“您自己的问题”,以便选择器的最后一行显示“您自己的问题”。我该怎么做呢
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
UILabel *retval = (id)view;
if (!retval)
retval= [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
// retval.text = [idAndNameArray objectAtIndex:row];
if([pickerType isEqualToString:@"picker"])
retval.text = [idAndNameArray objectAtIndex:row];
else
retval.text = [quesArray objectAtIndex:row];
retval.font = [UIFont boldSystemFontOfSize:14];
retval.numberOfLines = 3;
return retval;
此代码仅显示从 Web 服务获取的行数(问题)。
编辑 1:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView
return 1;
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
if([pickerType isEqualToString:@"picker"])
return [idAndNameArray count];
else
return [quesArray count];
编辑 2:
通过使用我的自定义对象“您自己的问题”创建另一个 NSMutableArray,然后使用从 Web 服务获取的数组附加它来解决
NSMutableArray *customObj = [NSMutableArray arrayWithObject: @"test"];
[quesArray addObjectsFromArray:customObj];
【问题讨论】:
【参考方案1】:在UIPickerViewDataSource
的名为pickerView:numberOfRowsInComponent:
的方法中,返回数组的计数加一个值(return arr.count+1;
),在您已实现的UIPickerVIewDelegate
方法中,当component
时返回带有文本的标签大于arr.count-1
(if(row>(arr-1))//return the label with 'Your own question'
)。祝你好运!
编辑:
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
if([pickerType isEqualToString:@"picker"])
return [idAndNameArray count];
else
return [quesArray count]+1;
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
UILabel *retval = (id)view;
if (!retval)
retval= [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
// retval.text = [idAndNameArray objectAtIndex:row];
if([pickerType isEqualToString:@"picker"])
retval.text = [idAndNameArray objectAtIndex:row];
else
if(row>quesArray.count-1)
retval.text = @"You own question";
else
retval.text = [quesArray objectAtIndex:row];
retval.font = [UIFont boldSystemFontOfSize:14];
retval.numberOfLines = 3;
return retval;
【讨论】:
但我只需要在选择器中有一个组件 这就是你的意思.. if([quesArray count] - 1 > quesPicker.numberOfComponents)....? 是的,有点,你能提供你的pickerView:numberOfRowsInComponent:
和numberOfComponentsInPickerView:
的代码,以便我能正确理解你吗?
crash..-[__NSArrayM objectAtIndex:]:空数组的索引 0 超出范围
在你使用数组的任何地方,你都必须检查数组是否有你传递给它的索引下的对象。以上是关于在 NSMutableArray 的末尾插入元素的主要内容,如果未能解决你的问题,请参考以下文章