何时使用numberOfSections或numberOfRowsInSection? (斯威夫特3)

时间:2017-04-11 07:55:59

标签: ios uitableview

enter image description here

为什么?  我不知道为什么输出只给了我3个部分。我对numberOfSections和numberOfRowsInSection非常困惑。

我不知道的事情:

为什么输出只返回3个部分?

我所知道的:

我在StackOverFlow上看到了一些帖子,他们说 Sections 就像一个组,就像这些部分中的单元格一样。但我仍然感到有些困惑。

4 个答案:

答案 0 :(得分:4)

嗯,font-size: 250pxfunc numberOfSections(in tableView: UITableView) -> Int // Default is 1 if not implementedfunc tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int数据源方法,当您在TableView中只需要相同类型的重复列表时,不需要UITableViews,如:假设你想在你的tableview中显示以下

1

2

3

4

...

在这种情况下,您需要numberOfSections numberOfRowsInSection此处您的表格将返回4个单元格,如果您不提供return 4此方法,默认情况下它将为1,您的代码将有效在你的课堂上没有这种方法。

但假设你需要在你的tableview中显示出来 1 2 3 4 一个 乙 C d 可以通过在数组中以字符串形式输入这些数据并在numberOfSections中打印它来实现。

但是为了使它更有组织,你可以在这里做更好的用户观看是使用部分。像

<强>数

1

2

3

4

<强>字母

A

C

d

在这里你必须使用cellForAt它应该返回2,一个用于Number,第二个用于Alphabet。 1,2,3,4和A,B,C,D是它们的数字和字母部分下的行。 我希望你得到它,否则下面的评论我会再次尝试让你理解。 感谢

答案 1 :(得分:3)

是的,这是一种分组,但不要与表视图的分组外观混淆。

简单示例:查看Contacts.app

的图标

enter image description here

字母是部分,包含的联系人是部分中的行。

您的输出显示您有1个部分,包含11行。

答案 2 :(得分:2)

UITableView以两级层次结构显示其数据:Sections和Rows。 一个部分正是这样的:一种方法可以将一个或多个行组合在一起(这意味着,这取决于所显示的特定数据)。

例如,假设您的数据行包含家电,并且您希望根据在哪个房间对它们进行分组:

- Kitchen
  - microwave
  - fridge
  - toaster

- Bedroom
  - computer
  - lamp

在这里,您有两个部分(名为KitchenBedroom),,它们分别有3行和2行

或者您可能有按国籍分组的人员列表。或按州分组的城市。您如何使用这种两级层次结构取决于您以及您的数据模型更有意义。

当然,您始终可以通过只包含一个包含所有行的部分来展平层次结构。如果您未实施或覆盖方法numberOfSections(inTableView:),则这是默认行为。

答案 3 :(得分:1)

我不知道我是否能比你已经找到的解释更好地解释这一点。 节是行的组,行是节的元素。

可以直观地描述多个部分数据集的对象可以是:

let multipleSection = [["section1-row1", "section1-row2", "section1-row3"], ["section2-row1", "section2-row2", "section2-row3"]]

此数组包含其他数组:每个子数组都是SECTIONS。

每个部分的内容都是属于该部分的ROWS。

我希望它有所帮助,我说得对,这让你感到困惑。