我的问题
当我处理时UITableView
,基本上table_data
我的节和行都有一个数组。
[
{
title : "section A title",
rows: [
{data: row_1_data},
{data: row_2_data}
]
},
{
title : "section B title",
rows: [
{data: row_1_data},
{data: row_2_data}
]
},
]
我使用heightForHeaderInSection
,cellForRowAtindexPath
,titleForHeaderInSection
,didSelectRowAtindexPath
这样的方法
if indexPath.section == 0 {
//section A
if indexPath.row == 0 {
//do something with table_data[0]["rows"][0]["data"]
}
elesif indexPath.row == 1 {
//do something else
}
}
if indexPath.section == 1 {
//do something for section B
}
当我的数组是动态的时,使用数字0
,1
等会变得令人头疼table_data
。动态是指某些节或行可以具有不同的位置,或者根本不存在。
例如,我删除A节,而我的数组是
[
{
title : "section B title",
rows: [
{data: row_1_data},
{data: row_2_data}
]
}
]
我喜欢这样
self.section_A_position = 0
self.section_B_position = 1
func afterRemoveSectionA() {
section_A_position = -999
section_B_position = section_B_position - 1
//write here another new sections for -1
}
将另一部分C添加为0元素
self.section_C_position = -999
func afterAddSectionC() {
section_C_position = 0
section_A_position = section_A_position + 1
section_B_position = section_B_position + 1
}
然后section_positions
在函数中使用
if indexPath.section == section_A_position {
//section A
if indexPath.row == 0 {
//do something with table_data[0]["rows"][0]["data"]
}
elesif indexPath.row == 1 {
//do something else
}
}
if indexPath.section == section_B_position {
//do something for section B
}
它看起来很简单,但是当我有很多节并且要在数组中隐藏或移动它的情况很多时,将很难控制和添加新类型的节。有时候,我创建section_positions_map
阵列将其存储起来,并+1
,-1
操作循环。但这并没有帮助,当我需要此行为时,仍然很难在每个TableViewController中进行组织。
题
您知道使这部分变得容易的任何方法或框架吗?
我的想法
将type
属性添加到我的字典
{
title : “section A title”,
rows: [
{data: row_1_data},
{data: row_2_data}
]
type : “section_a”
}
并检查if table_data[0]["type"] == "section_a"
(或用于enum
收集类型)
if table_data[0] is SubClassSectionA
但是他们俩对我来说都很难看。
我在创建表时使用的一种方法,在该表中我知道所有可能的部分都包含枚举。您为每种可能的节类型创建一个枚举:
enum SectionTypes { case sectionA, sectionB, sectionC }
然后创建一个变量来保存这些部分:
var sections: [SectionTypes]
准备好数据后,将用需要显示的部分填充各部分。我通常还会提供一种方法来帮助您获得本节:
func getSection(forSection: Int) -> SectionTypes {
return sections[forSection]
}
通过此操作,您可以开始实现常见的DataSource委托方法:
func numberOfSections(in collectionView: UICollectionView) -> Int {
return sections.count
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
switch getSection(forSection: section) {
case .sectionA:
return 0 //Add the code to get the count of rows for this section
case .sectionB:
return 0
default:
return 0
}
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
switch getSection(forSection: indexPath.section) {
case .sectionA:
//Get section A cell type and format as your need
//etc
}
}
问题内容: 我正在使用改造高效的网络库,但无法处理包含单个前缀的Dynamic JSON,该前缀 会随机更改,在某些情况下(动态),相同的前缀()会更改为String。 Json格式的responseMessage对象: Json格式会动态更改为字符串类型: 我的问题是,由于改造具有内置的解析,我必须为每个请求分配单个POJO!但是不幸的是,REST-API是基于动态响应构建的。前缀将在 成功(…
POJO: 在上面的代码POJO TrackerRefResponse.java前缀responseMessage被设置为responseMessage类型的string或object,所以我们可以用同名的ref变量(java basics:)创建POJO,所以我正在为Referfit中的dynamic寻找相同的解决方案。我知道这在带有异步任务的普通http客户端中非常容易,但这不是REST-AP
我想动态地从EditText中获取值...当用户按下添加按钮时,我生成了很多EditText...当用户按下添加按钮时,它每次都会生成3个Edittext。我不知道如何从这个动态生成的EdiTtext中获取值。现在我的问题是如何从每行的3个Edittext中获取值。我还需要验证用户是否删除了视图。请帮助我是新的android开发。当用户按下保存按钮时,应该会发生这种情况。提前谢谢! 这是课堂。 这
问题内容: 我知道使用准备好的语句有助于避免sql- injection。我的问题是,准备好的语句通常是非常静态的。我有一个问题,我在哪里在运行时根据用户输入建立sql查询的子句。根据填充的输入字段,我必须将相应的语句添加到where子句中。如何通过准备好的语句实现这一目标? 问题答案: 我猜您可以根据要查询的列来动态构建准备好的语句,即使用StringBuffer和循环根据所需的列来构建它们。
我可以在文档中看到: Flink目前只为没有迭代的作业提供处理保证。对迭代作业启用检查点会导致异常。为了在迭代程序上强制检查点,用户需要在启用检查点时设置一个特殊的标志:env.enablecheckpointing(interval,force=true)。 如果是一个而不是一个(这意味着它也可以保存状态),会有什么变化吗?
我在XML中定义了注入的流,如下所示: 因此,正如您所看到的,我实际上是从的方法启动方法(用于动态创建这些作业定义)。我不确定这是对的。它正在运行,但我不确定是否有一个不同的入口点更适合于这个目的。老实说,我也不知道注释的意义是什么。 当前遇到的问题是,当我从调用时,它会引发以下: 若要使用默认的BatchConfigurer,上下文必须包含一个以上的数据源(found 2)。 注意:我的项目实际