我有一个动词结合应用程序,它在表格的第一个单元格中显示动词翻译。目前翻译列表只是一个字符串(逗号分隔列表),但我想将其更改为具有可点击按钮。我在单元视图中添加按钮没有太大的成功,但是我对自定义单元的唯一体验是使用特定的定位,所以我不确定如何在单元格内实现动态按钮列表(不同的宽度)。
非常感谢任何帮助。
干杯。
答案 0 :(得分:4)
请执行以下操作
-(CGRect)placeAButton:(NSString*)textFromField withCell:(UITableViewCell*)cell
{
CGSize theSize;
CGSize constraintSize;
// Create a button and add as subview to cell
// Get coordinates to place the button
UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
button.titleLabel.font = [UIFont systemFontOfSize:MEDIUM_FONT_SIZE];;
button.titleLabel.lineBreakMode = UILineBreakModeTailTruncation;
button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitle:textFromField forState:UIControlStateNormal];
UIImage *buttonBkground;
buttonBkground = [UIImage imageNamed:@"blueButton.png"];
UIImage *newImage = [buttonBkground stretchableImageWithLeftCapWidth:12.0 topCapHeight:0.0];
[button setBackgroundImage:newImage forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];
[self.tableView reloadData]
}
在动态创建按钮时,您必须注意单元格宽度,高度等。
答案 1 :(得分:4)
我刚刚为我的新iPad应用做了这个,所以我想我会粘贴代码。
// NOTE - This is within a loop
// Add the translation as a button
UIButton *translationButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
translationButton.backgroundColor = [UIColor clearColor];
translationButton.titleLabel.font = [UIFont boldSystemFontOfSize:16];
[translationButton setTitle:translation forState:UIControlStateNormal];
[translationButton addTarget:self action:@selector(translationSearch:) forControlEvents:UIControlEventTouchUpInside];
// Work out required size
fontSize = [translationButton.titleLabel.text sizeWithFont:translationButton.titleLabel.font];
CGRect buttonFrame = CGRectMake(xOffset, 15, fontSize.width + 20.0, 24);
[translationButton setFrame:buttonFrame];
// Now set the new x Offset
xOffset = buttonFrame.origin.x + buttonFrame.size.width + 6.0;
[verbView addSubview:translationButton];
干杯。
答案 2 :(得分:3)
制作一个UIView
对象。将UIButton
个对象设置为此父视图的子视图。
完成后,您可以将此父视图添加到单元格的contentView
属性中。
在-tableView:cellForRowAtIndexPath:
委托方法中,在将其添加到单元格的contentView
之前,您将基于某些条件状态生成父视图(以及内部按钮的数量和类型)。
至于以编程方式执行此操作,只要某些条件发生更改,请运行[tableView reloadData]
或类似方法来刷新表视图及其单元格。
答案 3 :(得分:0)
您可以在viewcontroller cellForRowAtIndexPath函数中执行此操作:
var btn = UIButton(frame: CGRectMake(100, 100, 100, 20));
btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal);
btn.setTitle("My Button", forState:UIControlState.Normal);
btn.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside);
//add the buttons to the cell
cell.contentView.addSubview(btn)
在同一个类中添加另一个函数,该函数将接收按钮点击事件
func buttonTapped(sender: UIButton!)
{
println("Button Tapped")
}