TableViewController在搜索时填充,但不会加载初始视图

时间:2019-07-28 05:19:43

标签: ios swift xcode uitableview uisearchcontroller

Swift 5,iOS 12,Xcode 10

我终于在我的 ListingsViewController 上实现了一个搜索栏,它的确运行良好-但是初始数据并未填充到表中。

我意识到这是一个笨拙的实现,但是我正在学习中,并且仅使用我能理解的代码。我已经待了两天了-我尝试创建一个 Struct 并以这种方式引入数据,但是我什至无法获得一个 Array 。我尝试将其作为 NSArray Array Object 引入,但是我无法加载初始表,或者根本无法解析数据,或者无法进行搜索。

我怀疑这与我调用 loadData()函数的方式,时间或位置有关,但我无法弄清楚。

imgs, lables = next(trainBatch)
Traceback (most recent call last):
  File "C:\Users\Haier\AppData\Local\Programs\Python\Python36\lib\site-packages\IPython\core\interactiveshell.py", line 3296, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-20-4b8b727474cb>", line 1, in <module>
    imgs, lables = next(trainBatch)
  File "C:\Users\Haier\AppData\Local\Programs\Python\Python36\lib\site-packages\keras_preprocessing\image\iterator.py", line 100, in __next__
    return self.next(*args, **kwargs)
  File "C:\Users\Haier\AppData\Local\Programs\Python\Python36\lib\site-packages\keras_preprocessing\image\iterator.py", line 109, in next
    index_array = next(self.index_generator)
  File "C:\Users\Haier\AppData\Local\Programs\Python\Python36\lib\site-packages\keras_preprocessing\image\iterator.py", line 85, in _flow_index
    current_index = (self.batch_index * self.batch_size) % self.n
ZeroDivisionError: integer division or modulo by zero

我希望当我从标签栏切换到 ListingsViewController 时,将显示清单的整个列表。相反,我得到一个空白表。

但是,如果我点击搜索栏并开始输入内容,则会得到匹配的结果-当我取消搜索时,可以在表格中看到所有结果。

(此外,当我点击搜索栏时,即使取消搜索,导航栏也会消失并且不会返回。即使我切换到其他标签并返回。也无法找出答案。)

2 个答案:

答案 0 :(得分:0)

您缺少表视图的委托和数据源 添加此:

class ListingsViewController: UITableViewController, UISearchResultsUpdating,UITableViewDelegate,UITableViewDataSource {
//your class code here
}

并在您的viewDidLoad上添加以下内容:

self.tableView.delegate = self
self.tableView.dataSource = self

应该起作用,请注意,在调用委托和数据源后,将调用行和行数函数的单元格,因此请确保此时使用的数组不为空

答案 1 :(得分:0)

我看到您并没有缺少表视图的委托和数据源。 您必须为viewcontroler注册委托和数据源。显示数据的地方。

请将此代码插入您的viewDidLoad

self.tableView.delegate =自我

self.tableView.dataSource =自我