原谅noob问题,仍在学习。
我有一个UITableView,带有一个数据阵列(大约50个)。我正在寻找实现节标题,但我无法理解它。我能找到的所有信息似乎差别很大(似乎有鬃毛可以实现的方式吗?)而我似乎无法将它们拼凑在一起!
一如既往,我无法弄清楚Apple的文档,但我认为这归结于我的经验不足。
所以有几个问题:
我知道我需要说明需要多少个部分,使用单个数组,这将是最好的方法吗?
我可以使用单个阵列吗?或者我是否需要将其分解为多个阵列,每个阵列都有自己的部分?
提前致谢。
jonkroll的cellForRowAtIndexPath代码
switch (section) {
case 0:
cell.textLabel.text = (NSString*)[tableViewArray objectAtIndex:row];
break;
case 1:
cell.textLabel.text = (NSString*)[tableViewArray objectAtIndex:row+3];
break;
case 2:
cell.textLabel.text = (NSString*)[tableViewArray objectAtIndex:row+17];
break;
}
答案 0 :(得分:2)
UITableViewDataSource
协议中的方法允许您定义tableView如何呈现数据。
使用numberOfSectionsInTableView:
告诉您的表格会有多少部分。
使用numberOfRowsInSection:
告诉您的表格每个部分中有多少行。
使用cellForRowAtIndexPath:
告诉您的表基于indexPath在特定单元格中呈现的内容(indexPath是根据节和行标识特定单元格的结构)
所以你说你有一个想要在多个部分中显示的数组。这是一个非常人为的例子,但是假设您希望第1-30行位于第一部分,第31-50行位于第二部分。
您可以执行以下操作:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
switch (section) {
case 0: return 30; break;
case 1: return 20; break;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int section = [indexPath section];
int row = [indexPath row];
NSString* CellIdentifier = @"MyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
switch (section) {
case 0:
cell.textLabel.text = (NSString*)[array objectAtIndex:row];
break;
case 1:
cell.textLabel.text = (NSString*)[array objectAtIndex:row+30];
break;
}
return cell;
}
答案 1 :(得分:0)
您的应用程序可能有一个UITableViewDataSource
和UITableViewDelegate
(这是您返回数组元素并配置节数等的地方)。在那个班级(或那些班级,如果他们是分开的),你可以采取两种方法,取决于你想做什么。
如果您只想拥有默认外观的标题,请实施tableView:titleForHeaderInSection:
以返回每个部分所需的标题。
如果您想要自定义视图,请实施tableView:viewForHeaderInSection:
以及tableView:heightForHeaderInSection:
以返回自定义视图以及标题视图的高度。
答案 2 :(得分:0)
如果您希望标题考虑使用UITableViewCustomCell,请将其中一个拖到您设置tableView的笔尖中。在InterfaceBuilder中声明并链接。
IBOutlet UITableViewCell *cellOne;
@property (nonatomic, retain) IBOutlet UITableViewCell *cellOne;
然后,您可以使用将CellView分配给标题的表视图。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([array count] == 0) return cellone;
答案 3 :(得分:0)
你应该看一下Apple发布的iPhoneCoreDataRecipes示例。他们使用Tableview并以不同的方式显示数据。作为自己编程的新手,我不知道如何为您提供链接,但它位于数据管理下的iOS 5.0库中。