0

这是一个难题:我想editingAccessoryView为我的 stock 创建一个包含两个按钮的自定义UITableViewCell。我想使用故事板来实现这一点。到目前为止,我已按照此处此处此处列出的步骤进行操作。我似乎无法让它工作。我得到的最接近的是当我创建类型的 xib 时UIView,将类设置为UIViewController包含 的myUITableView并将其绑定到 my IBOutlet,但在cellForRowAtIndexPath它的nil.

事实是,我想我只需要知道如何创建视图然后将其映射到editAccessoryView; 从那里我相信我可以弄清楚如何添加按钮并映射相应的IBAction. 谁能提供一些分步说明或教程链接?

4

2 回答 2

3

我用以下代码自己解决了这个问题:

    UIView *editingCategoryAccessoryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 120, 35)];

    UIButton *addCategoryButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [addCategoryButton setTitle:@"Add" forState:UIControlStateNormal];
    [addCategoryButton setFrame:CGRectMake(0, 0, 50, 35)];
    [addCategoryButton addTarget:self action:@selector(addCategoryClicked:withEvent:) forControlEvents:UIControlEventTouchUpInside];

    UIButton *removeCategoryButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [removeCategoryButton setTitle:@"Remove" forState:UIControlStateNormal];
    [removeCategoryButton setFrame:CGRectMake(55, 0, 65, 35)];
    [removeCategoryButton addTarget:self action:@selector(removeCategoryClicked:withEvent:) forControlEvents:UIControlEventTouchUpInside];

    [editingCategoryAccessoryView addSubview:addCategoryButton];
    [editingCategoryAccessoryView addSubview:removeCategoryButton];
    cell.editingAccessoryView = editingCategoryAccessoryView;

如您所见,我以UIView编程方式创建了一个新按钮,并通过添加了两个按钮addSubview,然后将其分配给editingAccessoryView.

于 2013-02-13T03:58:39.117 回答
3

我知道这可能为时已晚,但它比您找到的解决方案要好得多。iOS 为您提供了一个名为tableView: editActionsForRowAtIndexPath indexPath:. 这种方法基本上允许您添加自己的 UITableViewRowActions,这比使用 UIButtons 添加整个 UIView 更容易(也更干净)。

苹果 说:

当您想为您的表格行之一提供自定义操作时,请使用此方法。当用户在一行中水平滑动时,表格视图将行内容移到一边以显示您的操作。点击其中一个操作按钮会执行与操作对象一起存储的处理程序块。

如果您不实现此方法,则表格视图会在用户滑动行时显示标准附件按钮。

如果需要,您可以自己查看Apple 文档

示例(斯威夫特)

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
    let customAction = UITableViewRowAction(style: .Normal, title: "Your Custom Action", handler: { (action: UITableViewRowAction!, indexPath: NSIndexPath!) in
        println("Do whatever it is you want to do when they press your custom action button")
    })
    editAction.backgroundColor = UIColor.greenColor()
    
    let deleteAction = UITableViewRowAction(style: .Normal, title: "Delete", handler: { (action: UITableViewRowAction!, indexPath: NSIndexPath!) in
        println("You can even implement a deletion action here")
    })
    deleteAction.backgroundColor = UIColor.redColor()
    
    return [deleteAction, editAction]
}
于 2015-04-17T20:25:55.897 回答