作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个设置屏幕,可以在两个单位系统(公制和英制)之间进行选择,并且希望在用户选择特定单元格时只显示一个复选标记,如果选择另一个单元格则切换复选标记。目前,我的代码选择了如图所示的两个单元格,并且当我稍后返回 View 时,不会将复选标记保存到所选单元格。
关于如何解决这个问题的任何想法。我在 stack 上看到过类似的问题,但大多数都在 ObjC 中。
代码:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
var weightValue: String? = unitsDefaults.objectForKey(kCCWeightKeyMetric) as! String?
var distanceValue: String? = unitsDefaults.objectForKey(kCCDistanceKeyMetric) as! String?
let cell = tableView.cellForRowAtIndexPath(indexPath)
if indexPath.row == 0 {
weightValue = "pounds" //Set to this for the default value of weight
unitsDefaults.setObject(weightValue, forKey: kCCWeightKeyMetric) //Save the kg value
distanceValue = "miles" //Set to this for the default value of distance
unitsDefaults.setObject(distanceValue, forKey: kCCDistanceKeyMetric) //Save the km value
cell?.accessoryType = UITableViewCellAccessoryType.Checkmark
unitsDefaults.synchronize()
//Check mark Selection
if unitsDefaults.stringForKey(kCCDistanceKeyMetric)! == "miles" {
cell?.accessoryType = UITableViewCellAccessoryType.Checkmark
} else if unitsDefaults.stringForKey(kCCDistanceKeyMetric)! == "km"{
cell?.accessoryType = UITableViewCellAccessoryType.None
}
} else {
weightValue = "kg" //Set to this for the default value of weight
unitsDefaults.setObject(weightValue, forKey: kCCWeightKeyMetric) //Save the kg value
distanceValue = "km" //Set to this for the default value of distance
unitsDefaults.setObject(distanceValue, forKey: kCCDistanceKeyMetric) //Save the km value
unitsDefaults.synchronize()
//Check mark Selection
if unitsDefaults.stringForKey(kCCDistanceKeyMetric)! == "km" {
cell?.accessoryType = UITableViewCellAccessoryType.Checkmark
} else if unitsDefaults.stringForKey(kCCDistanceKeyMetric)! == "miles"{
cell?.accessoryType = UITableViewCellAccessoryType.None
}
}
//Dismiss the View
if let navController = self.navigationController {
navController.popViewControllerAnimated(true)
}
}
最佳答案
做这个类型。我正在用 Objective-C 编写。您可以了解如何在 Swift 中执行。创建一个可变字典说'cellDictionary'
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellIdentifier" forIndexPath:indexPath];
NSString *cellRowString =[NSString stringWithFormat:@"%ld",(long)indexPath.row];
if([cellDictionary valueForKey:cellRowString]!=nil){
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellRowString =[NSString stringWithFormat:@"%ld",(long)indexPath.row];
if([cellDictionary valueForKey:cellRowString]==nil){
[cellDictionary setObject:cellRowString forKey:cellRowString];
}
[tableView reloadData];
}
关于ios - 使用复选标记配件显示在 swift 中选择的一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35624356/
我是一名优秀的程序员,十分优秀!