我有一个tableview用于在食谱应用程序中输入食谱的成分。我希望能够在tableview单元格中输入成分,然后将其保存到另一个视图控制器中显示 - UILabel(动态创建)。
我找到了一个代码来创建一个可编辑的tableview,可以插入和删除数据,但是没有代码可以在tableview单元格中输入。
有没有办法可以输入tableview单元格?最好的方法是什么?
此外,输入的所有数据都需要使用核心数据存储在数据库中。
以下是我的故事板的截图:
AddRecipeViewController中的tableview是我想要输入数据的地方。单击“保存”时,数据应显示在RecipeDetailViewController Ingredients UIView。
中更新
我为自定义单元格创建了IngrdientsTableViewCell类,其中包含用于输入文本的UITextField。但是当我编译时,tableview没有显示任何要输入的文本字段。我不知道我做错了什么。请帮忙!
更新的代码:
IngrdientsTableViewCell.h
@interface IngredientsTableViewCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UITextField *ingredientTextField;
@end
IngrdientsTableViewCell.m
- (void)awakeFromNib
{
// Initialization code
self.ingredientTextField = [[UITextField alloc]initWithFrame:CGRectMake(5, 5, 320, 39)];
self.ingredientTextField.autoresizingMask=UIViewAutoresizingFlexibleHeight;
self.ingredientTextField.autoresizesSubviews=YES;
self.ingredientTextField.layer.cornerRadius=10.0;
[self.ingredientTextField setBorderStyle:UITextBorderStyleRoundedRect];
[self.ingredientTextField setPlaceholder:@"Type Data Here"];
}
AddRecipeViewController.m
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.ingredientItems.count;
}
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Ingredient Cell";
IngredientsTableViewCell *ingredientCell = [self.ingredientsTableView dequeueReusableCellWithIdentifier:cellIdentifier];
// NSManagedObjectContext *managedObject = [self.ingredientItems objectAtIndex:indexPath.row];
if (ingredientCell == nil)
{
ingredientCell = [[IngredientsTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
ingredientCell.accessoryType = UITableViewCellAccessoryNone;
}
[ingredientCell addSubview:ingredientCell.ingredientTextField];
return ingredientCell;
}
感谢您的帮助。
答案 0 :(得分:0)
您应该拥有自定义UITableViewCell
,其中包含UITextView
。
答案 1 :(得分:0)
您可以将textField / View添加到tableViewCell,并像往常一样处理文本事件。我使用TextFields做类似的事情。
UITextField *textField;
cell.textLabel.text = NSLocalizedString(@"Name", @"Name");
textField = self.name = [self makeTextField:self.selectedUser.name];
textField.delegate = self;
self.name.autocapitalizationType = UITextAutocapitalizationTypeWords;
self.name.keyboardType = UIKeyboardTypeDefault;
self.name.returnKeyType = UIReturnKeyNext;
self.name.tag = indexPath.row;
[cell addSubview:self.name];
根据您的设置,您必须使用约束格式化文本字段,但最终您需要这样做。