0

可能有一个直截了当的答案,但我找不到。

我有一个 NSArray,里面装满了 NSDictionary 对象。每个 NSDictionary 对象中的对象数/2 决定了 UITableviewcell 的每个部分中的行数。同样,NSDictionary 对象的数量决定了部分的数量 - (这只是 [NSArray 计数])。

一个基本的例子:

self.myArray = [NSArray arrayWithObects:
[NSDictionary dictionaryWithObjectsAndKeys:obj1, key1, obj2, key2,..., nil],
...
[NSDictionary dictionaryWithObjectsAndKeys:objA, keyA ... objn, keyn, nil],
nil];

我一直在做的是手动计算每个 NSDictionary 中的对象数量,将每个数字除以 2 并使用该信息构造一个数组,其中每个元素包含每个部分的行数。然后在 tableview numberOfRowsInSection 委托中使用手动构建的数组。这似乎充其量是粗略的。顺便说一句,但不重要,我除以 2 的原因是每个 tableview 单元格由 2 个 UIlabel 子视图组成 - 1 个标签用于 obj...,另一个用于 key...,用于其中的每组 NSDictionary 对象。

提前非常感谢。

4

2 回答 2

1

使用NSArrayNSDictionarycount上的函数:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [myArray count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSDictionary *dictionary = [myArray objectAtIndex:section];
    return [dictionary count] / 2;
}
于 2012-06-24T06:53:14.783 回答
1
@implementation NSArray (totalObjects)

- (NSUInteger) totalObjects
{
NSUInteger result = 0;
for (id object in self)
 result += [object isKindOfClass:[NSDictionary class]] ? [[object allKeys] count] : 1;
return result;
}

@end
于 2012-06-24T06:54:41.087 回答