这就是困境:我想创建一个自定义editingAccessoryView
,其中包含我的股票UITableViewCell
的两个按钮。我想用故事板来实现这个目标。到目前为止,我已按照here,here和here列出的步骤进行了操作。我似乎无法让它工作。我得到的最接近的是当我创建类型为UIView
的xib时,将类设置为包含UIViewController
的{{1}}的类并将其绑定到我的UITableView
,但是在IBOutlet
上cellForRowAtIndexPath
。
事实是,我想我只需要知道如何创建视图然后将其映射到nil
;从那里我相信我可以弄清楚如何添加按钮并映射相应的editAccessoryView
。任何人都可以提供一些分步说明或教程链接吗?
答案 0 :(得分: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
。
答案 1 :(得分:3)
我知道这可能为时已晚,无法提供帮助,但它比您找到的解决方案要好得多。 iOS为您提供了一个名为tableView: editActionsForRowAtIndexPath indexPath:
的方法。此方法基本上允许您添加自己的UITableViewRowActions,这比使用UIButtons添加整个UIView更容易(也更干净)。
如果要为其中一个表行提供自定义操作,请使用此方法。当用户在一行中水平滑动时,表格视图会将行内容移到一边以显示您的操作。点击其中一个操作按钮会执行与操作对象一起存储的处理程序块。
如果您没有实现此方法,表格视图会在用户滑动行时显示标准附件按钮。
如果需要,您可以自己查看Apple Documentation。
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]
}