我面临的是我在Swift中开发的代码。它有一些自定义单元格和UIButton。按钮是IBOutlet连接,其各自的单元格中具有属性,对它们的操作绑定在相同的类中。现在的问题是它在iOS 8中运行得很完美。但是每当我触摸按钮时,我都不知道iOS 7有什么问题,完整的单元格被点击并且Tableview的{{1} } 叫做。我到目前为止所做的是
didSelectRowAtIndexPath:
以查看父视图和单元格并更改其值.userInteractionEabled
,numberOfSections
和numberOfRowsInsection:
,并将其返回类型更改为在stackoverflow针对问题上找到的NSInteger和CGFloat。 到目前为止,还有其他人遇到过这个问题并找到了解决方案吗?
修改
答案 0 :(得分:1)
我已经测试了你的问题。它对我来说运行良好。请参阅下面的代码。
在TestTableViewController.swift
中override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as CustomCell
// Configure the cell...
cell.testButton.addTarget(cell, action: "testButtonClicked", forControlEvents: UIControlEvents.TouchUpInside)
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
NSLog("didSelectRowAtIndexPath called")
}
在CustomCell.swift
中class CustomCell: UITableViewCell {
@IBOutlet var testButton: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func testButtonClicked() {
NSLog("Button Clicked")
}
}
当我点击按钮时,它会记录"按钮点击"当点击单元格时,它会记录" didSelectRowAtIndexPath调用"。你可能在reset()函数或倒数第二个函数中做错了。
答案 1 :(得分:0)
我在我的应用程序中完成了以下代码,它运行正常。
请勿尝试在自定义tableview单元格上进行编码。
您可以在viewcontroller中获取该单元格的值。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row==0)
{
static NSString *simpleprice = @"Price";
price = (PriceCell *)[tableView dequeueReusableCellWithIdentifier:simpleprice];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PriceCell" owner:self options:nil];
price = [nib objectAtIndex:0];
[price.btnPrice addTarget:self action:@selector(buyPressed) forControlEvents:UIControlEventTouchUpInside];
}
return price;
}
希望这会对你有所帮助。这适用于ios7和ios8。
...谢谢
答案 2 :(得分:0)
经过长时间挖掘后我遇到了这样的问题,我找到了根本原因并且它在 Cell XIB
我之前所做的事情:
i)首先我添加了CustomCell .h
和.m
ii)之后我通过新文件选项添加了 XIB ,你注意到了,
有像“查看”这样的选项,我已选择并添加到捆绑包中。用我的CustomCell.h
绑定它。
解决方案:
i)按新文件选项添加 XIB ,在用户界面中选择查看。 ii)在XIB中,您可以在左侧面板中看到视图。删除该视图。 iii)从User Interface面板拖放UITableViewCell。完成此步骤后, XIB 会出现类似下图所示的内容。
答案 3 :(得分:0)
更改您的cell.button Action target to self
,并将您的按钮操作方法复制到UITableView可用的viewController类(.mm)文件中。