可编辑的表视图

时间:2015-09-15 20:10:01

标签: ios objective-c uitableview

我有一个tableview用于在食谱应用程序中输入食谱的成分。我希望能够在tableview单元格中输入成分,然后将其保存到另一个视图控制器中显示 - UILabel(动态创建)。

我找到了一个代码来创建一个可编辑的tableview,可以插入和删除数据,但是没有代码可以在tableview单元格中输入。

有没有办法可以输入tableview单元格?最好的方法是什么?

此外,输入的所有数据都需要使用核心数据存储在数据库中。

以下是我的故事板的截图:

enter image description here

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;
}

感谢您的帮助。

2 个答案:

答案 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];

根据您的设置,您必须使用约束格式化文本字段,但最终您需要这样做。