我有四个文本字段,例如textfield1
,textfield2
,textfield3
,textfield4
和一个按钮。当我点击按钮时,我将文本域文本添加到NSMutableArray
并填入tableview
。
我的代码是:
- (void)buttonClick
{
NSMutableArray *array =[[NSMutableArray alloc]init];
[array addObject: textfield1.text];
[array addObject: textfield2.text];
[array addObject: textfield3.text];
[array addObject: textfield4.text];
}
使用委托方法在表格视图中填充
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
cell.textLabel.text =[array objectAtIndex:indexPath.row];
return cell;
}
上面的代码工作正常。但是,当我单击按钮而不在文本字段中输入任何数据时,应用程序崩溃,因为数组为空。如何解决这个问题?
答案 0 :(得分:3)
您无法将nil
添加到数组中。
[array addObject:textfield1.text ?: @""];
[array addObject:textfield2.text ?: @""];
[array addObject:textfield3.text ?: @""];
[array addObject:textfield4.text ?: @""];
这确保了数组中有四个项目(可能是空字符串)。
答案 1 :(得分:1)
为什么会崩溃?
您无法在数组中添加nil。它应该有内在的东西。
-(void)buttonClick
{
NSMutableArray *array =[[NSMutableArray alloc]init];
if ([textfield1.text length]>0) {
[array addObject: textfield1.text];
}
if ([textfield2.text length]>0) {
[array addObject: textfield2.text];
}
if ([textfield3.text length]>0) {
[array addObject: textfield3.text];
}
}
答案 2 :(得分:0)
试试这个
-(void)buttonClick
{
NSMutableArray *array =[[NSMutableArray alloc]init];
if(textfield1.text.length > 0)
[array addObject: textfield1.text];
if(textfield2.text.length > 0)
[array addObject: textfield2.text];
if(textfield3.text.length > 0)
[array addObject: textfield3.text];
if(textfield4.text.length > 0)
[array addObject: textfield4.text];
}
使用委托方法在表格视图中填充
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
cell.textLabel.text =[array objectAtIndex:indexPath.row];
return cell;
}
如果您有多个文本字段,那么: //给出每个文本字段的标记值,从100到150或任何任何标记(我正在考虑50个文本字段)
for (int i=100; i<=150; i++) {
// self.view or use ur view on which u r addding textfield
id txtF = [self.view viewWithTag:i];
if([txtF isKindOfClass:[UITextField class]]) {
UITextField *txtField = (UITextField*)txtF;
if(txtField.text.length > 0) {
//Add ur object
}
}
}
答案 3 :(得分:0)
你可以在放入一个数组之前检查文本字段是否有文本,如果是,则将其放入数组中。
答案 4 :(得分:0)
buttonClick方法中的这一行定义了一个本地数组变量:
NSMutableArray *array =[[NSMutableArray alloc]init];
应该是
array =[[NSMutableArray alloc]init];
您的实例变量数组。