gpt4 book ai didi

ios - 在搜索期间向 tableView 添加部分和行,如 Tweetbot 中所示

转载 作者:行者123 更新时间:2023-11-30 13:56:03 25 4
gpt4 key购买 nike

我正在尝试创建一个与 Tweetbot 非常相似的搜索 View Controller ,其中向搜索栏添加文本会在 tableView 中插入一个新部分和新行, like so .

我尝试使用 searchBar 委托(delegate)方法 searchBarTextDidBeginEditingsearchBar(_:, textDidChange:) 但我尝试在方法中插入新的部分和行导致崩溃。

我尝试过的:

    tableView.beginUpdates()

tableView.insertSections(NSIndexSet(index: 0), withRowAnimation: .None)

tableView.insertRowsAtIndexPaths(
[
NSIndexPath(forRow: 0, inSection: 0),
NSIndexPath(forRow: 1, inSection: 0),
NSIndexPath(forRow: 2, inSection: 0)
],

withRowAnimation: .None)

tableView.endUpdates()

我得到的错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 
'Invalid update: invalid number of sections. The number of sections contained in the table
view after the update (3) must be equal to the number of sections contained in the table
view before the update (3), plus or minus the number of sections inserted or deleted
(1 inserted, 0 deleted).'
*** First throw call stack:
(0x181a19900 0x181087f80 0x181a197d0 0x18238c99c 0x18695c724 0x10008b578
0x10008b5e8 0x18696d0a0 0x18679bc48 0x18679bbc4 0x186783880 0x186782bfc
0x18677ef98 0x186875268 0x18696cdfc 0x18696fe60 0x1869c817c 0x18696d02c
0x1867eca24 0x10029004c 0x1867ecea4 0x186873d38 0x186924b84 0x186924038
0x186ce2a18 0x186909158 0x1867967a8 0x186ce4018 0x186755960 0x1867526e4
0x186794618 0x186793c14 0x1867642c4 0x18676258c 0x1819d0efc 0x1819d0990
0x1819ce690 0x1818fd680 0x182e0c088 0x1867cd40c 0x100123594 0x18149e8b8)
libc++abi.dylib: terminating with uncaught exception of type NSException

感谢您的帮助。

最佳答案

在调用tableView.endUpdates()之后,您的表格 View 将调用其UITableViewDataSource委托(delegate),并且它期望tableView(tableView: UITableView, numberOfRowsInSection部分: Int ) -> Int 方法返回 3。(因为您在第一部分中添加了 3 行)。

尝试这样的事情:

声明新属性:

var showSearchSelection = false

搜索:

tableView.beginUpdates()

tableView.insertSections(NSIndexSet(index: 0), withRowAnimation: .None)

tableView.insertRowsAtIndexPaths(
[
NSIndexPath(forRow: 0, inSection: 0),
NSIndexPath(forRow: 1, inSection: 0),
NSIndexPath(forRow: 2, inSection: 0)
],

withRowAnimation: .None)

showSearchSelection = true

tableView.endUpdates()

UITableViewDataSource 委托(delegate):

extension UIViewController : UITableViewDataSource {

public func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}

public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section:
case 0:
return showSearchSelection ? 3 : 0
default:
return 0
}
}

关于ios - 在搜索期间向 tableView 添加部分和行,如 Tweetbot 中所示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33607799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com