uiTableView select 前 select 行?
uiTableView select the previous selected row?
我对 didDeselectRowAtIndexPath
委托函数有疑问。
当我第一次 select 时,didDeselectRowAtIndexPath
没有被调用。
但是当我 select 另一个单元格时,调用 didDeselectRowAtIndexPath
但具有前一个 selection 的索引路径。
举个例子:
- 我已经 select 编辑了索引 5 处的行。所以什么都不会发生。
- 我在索引 12 处 selected 行,然后
didDeselectRowAtIndexPath
将被调用 indexPath.row = 5.
我不明白为什么会这样,这是我的代码:谢谢
class testUICollectionView: UIViewController ,UITableViewDelegate,UITableViewDataSource {
let tableItems :NSMutableArray = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5",
"Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11",
"Item 12", "Item 13", "Item 14", "Item 15","Item 12", "Item 13", "Item 14", "Item 15","Item 12", "Item 13", "Item 14", "Item 15"]
var tableView:UITableView!;
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.blueColor();
tableView = UITableView();
tableView.frame = self.view.frame;
tableView.registerClass(TableViewCell.self, forCellReuseIdentifier: "Cell");
tableView.dataSource = self;
tableView.delegate = self;
self.view.addSubview(tableView)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// Return the number of rows in the section.
return tableItems.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell
cell.setTextLabel(tableItems[indexPath.row] as! String);
return cell
}
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
print("inexPath.row : " + String(indexPath.row));
}
}
////////////////////////// table view cell
class TableViewCell:UITableViewCell{
var label:UILabel!;
func setTextLabel(new_text:String){
if (label == nil){
label = UILabel();
label.frame = self.contentView.frame;
label.textColor = UIColor.whiteColor();
label.backgroundColor = UIColor.whiteColor();
label.textColor = UIColor.blackColor();
self.contentView.addSubview(label);
}
label.text = new_text;
}
}
只能同时 select 编辑一个单元格。当您 select 另一个单元格时,您之前 select 编辑过的单元格将被默认删除select。这就是为什么 didDeselectRowAtIndexPath:
与前面的 indexPath
一起调用的原因
我认为你的问题是你使用 "didDeselectRowAtIndexPath" (didDeselectRowAtIndexPath) 而你想使用 "didSelectRowAtIndexPath".
我对 didDeselectRowAtIndexPath
委托函数有疑问。
当我第一次 select 时,didDeselectRowAtIndexPath
没有被调用。
但是当我 select 另一个单元格时,调用 didDeselectRowAtIndexPath
但具有前一个 selection 的索引路径。
举个例子:
- 我已经 select 编辑了索引 5 处的行。所以什么都不会发生。
- 我在索引 12 处 selected 行,然后
didDeselectRowAtIndexPath
将被调用 indexPath.row = 5.
我不明白为什么会这样,这是我的代码:谢谢
class testUICollectionView: UIViewController ,UITableViewDelegate,UITableViewDataSource {
let tableItems :NSMutableArray = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5",
"Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11",
"Item 12", "Item 13", "Item 14", "Item 15","Item 12", "Item 13", "Item 14", "Item 15","Item 12", "Item 13", "Item 14", "Item 15"]
var tableView:UITableView!;
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.blueColor();
tableView = UITableView();
tableView.frame = self.view.frame;
tableView.registerClass(TableViewCell.self, forCellReuseIdentifier: "Cell");
tableView.dataSource = self;
tableView.delegate = self;
self.view.addSubview(tableView)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// Return the number of rows in the section.
return tableItems.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell
cell.setTextLabel(tableItems[indexPath.row] as! String);
return cell
}
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
print("inexPath.row : " + String(indexPath.row));
}
}
////////////////////////// table view cell
class TableViewCell:UITableViewCell{
var label:UILabel!;
func setTextLabel(new_text:String){
if (label == nil){
label = UILabel();
label.frame = self.contentView.frame;
label.textColor = UIColor.whiteColor();
label.backgroundColor = UIColor.whiteColor();
label.textColor = UIColor.blackColor();
self.contentView.addSubview(label);
}
label.text = new_text;
}
}
只能同时 select 编辑一个单元格。当您 select 另一个单元格时,您之前 select 编辑过的单元格将被默认删除select。这就是为什么 didDeselectRowAtIndexPath:
与前面的 indexPath
我认为你的问题是你使用 "didDeselectRowAtIndexPath" (didDeselectRowAtIndexPath) 而你想使用 "didSelectRowAtIndexPath".