ios - 可扩展 TableView 行 - 为什么像树错误?
<p><p><strong>错误</strong> <strong>在应用中找不到索引行</strong></p>
<p>我正在处理这个代码</p>
<ol>
<li><p>如果我单击第一个时间 TableView 行,则会显示错误</p>
<p>但它会显示子行。</p>
<p>2.如果我单击子行,则会显示此错误:未定义不是对象</p>
<p>(评估(e.row.sub.length)</p>
<p>为什么会出现这个错误?</p>
<p>代码</p>
<pre><code>var win = Ti.UI.createWindow();
var container = Ti.UI.createView({ backgroundColor: "white", layout: "vertical" });
var layout = [{
title: "Parent 1",
isparent: true,
opened: false,
sub: [
{ title: "Child 1" },
{ title: "Child 2" }
]
}, {
title: "Parent 2",
isparent: true,
opened: false,
sub: [
{ title: "Child 3" },
{ title: "Child 4" }
]
}];
var tableView = Ti.UI.createTableView({
style: Titanium.UI.iPhone.TableViewStyle.GROUPED,
top: 0,
height: Ti.Platform.displayCaps.platformHeight,
data: layout
});
tableView.addEventListener("click", function (e) {
var i;
//Is this a parent cell?
console.log(e.row);
if (e.row.isparent) {
//Is it opened?
if (e.row.opened) {
for (i = e.row.sub.length; i > 0; i = i - 1) {
tableView.deleteRow(e.index + i);
}
e.row.opened = false;
} else {
//Add teh children.
var currentIndex = e.index;
for (i = 0; i < e.row.sub.length; i++) {
tableView.insertRowAfter(currentIndex, e.row.sub);
currentIndex++;
}
e.row.opened = true;
}
}
});
container.add(tableView);
win.add(container);
win.open();
</code></pre>
<p>任何帮助将不胜感激</p></li>
</ol></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您的代码的问题是,当表索引尚未更新时,您试图在表的末尾插入许多行。它的解决方案是使用相同的索引以相反的顺序添加行。</p>
<p>这是您的事件监听器的修改版本:</p>
<pre><code>tableView.addEventListener("click", function (e) {
var i, rows;
//Is this a parent cell?
if (e.row.isparent) {
//Is it opened?
if (e.row.opened) {
for (i = e.row.sub.length; i > 0; i = i - 1) {
tableView.deleteRow(e.index + i);
}
e.row.opened = false;
} else {
//Add teh children.
rows = e.row.sub.reverse();
for (i = 0; i < rows.length; i++) {
tableView.insertRowAfter(e.index, rows);
}
e.row.opened = true;
}
}
});
</code></pre></p>
<p style="font-size: 20px;">关于ios - 可扩展 TableView 行 - 为什么像树错误?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/22375064/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/22375064/
</a>
</p>
页:
[1]