我遇到的问题是我不知道如何正确编码我的tableViewController,因此它显示2个部分,一个包含Items(对象类型),其值大于50,第二个部分用于值小于50.我的代码如下:
@implementation ItemsViewController
- (instancetype)init
{
self = [super initWithStyle:UITableViewStylePlain];
if(self)
{
for (int i = 0; i < 5; i++)
{
[[ItemStore sharedStore] createItem];
}
}
return self;
}
- (instancetype)initWithStyle:(UITableViewStyle)style
{
return [super initWithStyle:UITableViewStylePlain];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView;
{
return @[@">50", @"<=50"];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0)
{
return [[[ItemStore sharedStore] itemsValuedOver50] count];
}
else
{
return [[[ItemStore sharedStore] itemsValuedBelowOrEqual50] count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath];
if (indexPath.section == 0)
{
NSArray *items = [[ItemStore sharedStore] itemsValuedOver50];
NSArray *item = items[indexPath.row];
cell.textLabel.text = [item description];
}
else
{
NSArray *items = [[ItemStore sharedStore] itemsValuedBelowOrEqual50];
NSArray *item = items[indexPath.row];
cell.textLabel.text = [item description];
}
return cell;
}
@end
部分名称(“&gt; 50”和&lt; = 50)出现在屏幕右侧的中间(看起来像是在表格视图之外),并且表格视图仍然表现得像它只有一节。这5个项目没有以任何方式排序,我不明白为什么。
以下是该应用程序屏幕截图的链接:http://imgur.com/3MoHmmn
我一直在寻找答案,但为了公平起见我不知道如何很好地描述我的问题以便在网上找到任何解决方案,这就是为什么我要创建一个新话题。
提前感谢您的帮助。
编辑:我已经找到了问题所在。我花了几天时间,这是非常愚蠢的。我用错了方法。而不是使用sectionIndexTitlesForTableView:我应该使用titleForHeaderInSection:。现在一切正常,因为我希望它能够发挥作用。
答案 0 :(得分:0)
尝试通过代理设置部分高度
- (CGFloat)tableView:(UITableView *)tableView heightForSection:(NSUInteger)section;