如何禁用与所选cells
之外的所有didSelectRowAtIndexPath
的互动,然后在再次选择单元格后启用互动?
我在if cell.isExpanded
{
UIView.animateWithDuration(0.3) {
cell.contentView.layoutIfNeeded()
self.tableView.userInteractionEnabled = false
cell.userInteractionEnabled = true
}
}
方法中试过这个:
tableView
但这会停用整个cell
,包括当前选定的$(document).ready(function() {
var mainDataTable = $("#mainDataTable").DataTable({
"pagingType" : "full_numbers",
"processing" : true,
"serverSide" : true,
"jQueryUI" : true,
"ajax" : "/JsonData",
"columns" : [
{ "data" : "caller" },
{ "data" : "event" },
{ "data" : "receiver" },
{ "data" : "timestamp" }
]
});
$("#mainDataTable tbody").on("dblclick", "tr", function () {
var data = mainDataTable.row().data();
$("#modalDialogBody").html(
'<table class="display jqueryAllCallsDataTable" id="allCalls"><thead><tr>' +
'<th>Timestamp</th><th>Talk Duration</th><th>Receiver</th><th>Type</th></tr>' +
'</thead><tbody><!-- Data will go here --></tbody></table>');
$("#modalDialogTitle").text(data[0] + "#: All Calls");
$("#allCalls").DataTable({
"pagingType": "full_numbers",
"processing": true,
"serverSide": true,
"jQueryUI": true,
"ajax": {
"url": "/JsonData",
"data": function (d) {
d.orderByTimestampDesc = true;
d.callerId = data[0];
}
},
"searching": false,
"ordering": false,
"columns": [
{"data": "timestamp"},
{"data": "talkDuration"},
{"data": "receiver"},
{"data": "type"}
]
});
$("#modalDialog").modal();
});
$("#mainDataTable tbody").on("click", "tr", function() {
var data = mainDataTable.row().data();
$("#modalDialogBody").html(
'<table class="display jqueryCallDetailsDataTable" id="callDetails"><thead>' +
'<tr><th>Caller</th><th>Event</th><th>Receiver</th><th>Timestamp</th></tr>' +
'</thead><tbody><!-- Data will go here --></tbody></table>');
$("#modalDialogTitle").text(data[0] + "#: Regular/Cancelled call");
$("#callDetails").DataTable({
"pagingType": "full_numbers",
"processing": true,
"serverSide": true,
"jQueryUI": true,
"ajax": {
"url": "/JsonData",
"data": function (d) {
d.callerId = data[0];
}
},
"searching": false,
"ordering": false,
"columns": [
{"data": "caller"},
{"data": "event"},
{"data": "receiver"},
{"data": "timestamp"}
]
});
$("#modalDialog").modal();
});
});
。
答案 0 :(得分:3)
首先你的tableView
需要选择单元格,在选择了一个单元格后,你希望其他单元格不能选择除了选定的单元格,为此你可以创建一个类型为{{1的实例属性并使用它存储在NSIndexPath
内,并像这样在didSelectRowAtIndexPath
内比较它的值。
cellForRowAtIndexPath
<强>的cellForRowAtIndexPath 强>
var selectedIndexPath: NSIndexPath?
<强> didSelectRowAtIndexPath方法强>
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! CustomCell
if (self.selectedIndexpath != nil) {
if self.selectedIndexpath == indexPath {
cell.userInteractionEnabled = true
}
else {
cell.userInteractionEnabled = false
}
}
else {
cell.userInteractionEnabled = true
}
return cell
}
注意:如果选择展开的单元格,我已将单元格func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if self.selectedIndexpath != indexPath {
self.selectedIndexpath = indexPath
}
else {
self.selectedIndexpath = nil
}
tableView.reloadData()
}
再次设置为true。
答案 1 :(得分:0)
使用
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
找到所选单元格并存储在变量中选择的indexPath并重新加载tableview。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
通过检查存储的indexPath来禁用除选择的单元格以外的所有单元格。
希望这有帮助。