我在表视图的一个单元格中有一个切换按钮。以前在iOS 9中,一切正常,点击切换按钮后会转到动作方法。但是在更新到iOS 10之后,动作方法永远不会被调用。任何人都有类似的问题吗?
cell.m
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
UIImageView *bgView = [[UIImageView alloc] initWithFrame:CGRectZero];
[bgView setImage:[[UIImage imageNamed:@"customcell.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)]];
[self setBackgroundView:bgView];
UIImageView *selectedBgView = [[UIImageView alloc] initWithFrame:CGRectZero];
[selectedBgView setImage:[[UIImage imageNamed:@"cellselect.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 10, 10)]];
[self setSelectedBackgroundView:selectedBgView];
nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 13, 250, 40)];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleRightMargin];
[nameLabel setFont:[UIFont boldSystemFontOfSize:16]];
[nameLabel setBackgroundColor:[UIColor clearColor]];
[nameLabel setTextColor:[UIColor whiteColor]];
[nameLabel setNumberOfLines:0];
[self.contentView addSubview:nameLabel];
switchButton = [[UISwitch alloc] initWithFrame: CGRectMake(230, 17, 100, 30)];
[switchButton setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin];
[switchButton addTarget:self action:@selector(switchActivated:) forControlEvents:UIControlEventTouchUpInside];
[switchButton setHidden:YES];
[self.contentView addSubview:switchButton];
}
return self;
}
行动方法:
- (void) switchActivated:(id)sender
{
if(switchButton.on)
{
[selectedItem setObject:@"YES" forKey:@"valueEntry"];
}
else
{
[selectedItem setObject:@"NO" forKey:@"valueEntry"];
}
}
ViewController.m 索引路径中行的单元格:
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *tableViewCell = [aTableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"homeReportCustomizationCell_%d",indexPath.row]];
if(!tableViewCell)
{
tableViewCell = [[Cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"Cell_%d",indexPath.row]];
}
...........
}
答案 0 :(得分:0)
只需更改UIControlEventTouchUpInside
[switchButton addTarget:self action:@selector(switchActivated:) forControlEvents:UIControlEventTouchUpInside];
即可
收件人:UIControlEventValueChanged
答案 1 :(得分:0)
我有同样的问题!
我在UIScrollView中有一个UISwitch和一个UITextField。 我将scrollView添加到我的self.view。
我用运行iOS 10的iPad Pro进行了测试 - 在升级到最新版本的iOS之前,一切正常。 现在我的方法没有被调用!!
希望我不必采用程序化解决方案 - 这将是一个无赖。