添加具有UITextfield值的tableview单元格

时间:2013-10-12 16:25:41

标签: ios objective-c uitableview

我在UITextField标题中有一个UITableView。当用户在UITextFields中输入任何内容时,该条目会添加到NSMutableArray

每当调用UITableCell时,我想创建一个新的UITextField,其值为textFieldShouldReturn

我尝试使用reloadData,但这似乎完全清空了我的数组。

有什么建议吗?感谢

 - (BOOL)textFieldShouldReturn:(UITextField *)task
{

[task resignFirstResponder];   
[self.tasksArray addObject:task.text];

NSLog(@"Test %@", self.tasksArray);
}

我的cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";
SwipeTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (!cell) {
    cell = [[SwipeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                     reuseIdentifier:CellIdentifier];
}

[cell setDelegate:self];
[cell.contentView setBackgroundColor:[UIColor whiteColor]];

// Setting the default inactive state color to the tableView background color
[cell setDefaultColor:self.tableView.backgroundView.backgroundColor];
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];
[cell.textLabel setText:self.task.text];
self.view = tableView;

cell.mode = SwipeTableViewCellModeExit;
return cell;
}

我的UITableView标题:

- (UIView *)tableView:(UITableView *)tableView 
            viewForHeaderInSection:(NSInteger)section{

float width = tableView.bounds.size.width;
int fontSize = 18;
int padding = 1;

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0,width, fontSize+11)];
view.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
view.userInteractionEnabled = YES;
view.tag = section;

UITextField *task = [[UITextField alloc] initWithFrame:CGRectMake(padding, 2, 
                                           width - padding , fontSize + 11)];
task.text = @"Type here";
task.borderStyle = UITextBorderStyleRoundedRect;
task.textAlignment = NSTextAlignmentCenter;
task.backgroundColor = [UIColor whiteColor];
task.textColor = [UIColor blackColor];
task.delegate = self;
task.font = [UIFont boldSystemFontOfSize:fontSize];

[view addSubview:task];
self.tasksArray = [[NSMutableArray alloc] init];

return view;
}

viewDidLoad

- (void)viewDidLoad {

[super viewDidLoad];
self.tasksArray = [NSMutableArray arrayWithCapacity:0];
self.title = @"Test";
self.navigationController.navigationBar.tintColor = [UIColor darkGrayColor];

UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[backgroundView setBackgroundColor:[UIColor colorWithRed:227.0 / 255.0 
                                                   green:227.0 / 255.0 
                                                    blue:227.0 / 255.0 
                                                   alpha:1.0]];
[self.tableView setBackgroundView:backgroundView];

}

2 个答案:

答案 0 :(得分:0)

此行不正确地提取数据:[cell.textLabel setText:self.task.text]; self.view = tableView;

它应该来自你的数组。

你永远不会重新加载数据,这应该是textFieldShouldReturn中的最后一行

答案 1 :(得分:0)

删除 [cell.textLabel setText:self.task.text];

然后,

[self.yourTableOutletName reloadData];

之后插入[self.tasksArray addObject:task.text];

现在,在将对象添加到self.taskArray后,您的代码将重新加载tableView

然后,

在tablView中反映您的数组,请使用此行。

[cell.textLabel setText:[self.tasksArray objectAtIndex:indexPath.row]];

之后插入[cell setSelectionStyle:UITableViewCellSelectionStyleGray];