我正在使用uitableview进行分页。我有40个对象的数组。在numberofrowsinasection方法中,我返回10行。它的平均总页数是四。在pagecontrol方法中,我正在实现分页。当我喜欢
-(ibaction) pagecontrol:
{
if (pagecontrol.currentpage == 0)
{
for (int i=0; i<10; i++ )
{
cell.textlabel.text = [objectarray objectatindex:i];
}
}
if (pagecontrol.currentpage == 1)
{
for (int i=10; i<19; i++ )
{
cell.textlabel.text = [objectarray objectatindex:i];
}
}
if (pagecontrol.currentpage == 2)
{
for (int i=20; i<29; i++ )
{
cell.textlabel.text = [objectarray objectatindex:i];
}
}
if (pagecontrol.currentpage == 3)
{
for (int i=30; i<39; i++ )
{
cell.textlabel.text = [objectarray objectatindex:i];
}
}
}
但我在uiableview中发现了一个奇怪的结果。这是对的吗?我在哪里搞这个pagecontrol方法的错误?
答案 0 :(得分:0)
你总是有40行还是可以少一些?
您发布的代码以缺少的方法参数开头。冒号后面应该没有冒号或参数(带有数据类型)。
您发布的代码有几个问题。最大的问题是您将同一单元格的文本设置为10次。您需要设置10个单元格的文本,每个单元格一次。
无论如何,你都错了。用以下方法替换您发布的方法:
-(IBAction)pagecontrol:(UIPageControl *)pageControl {
[self.tableView reloadData];
}
然后,在tableView:cellForRowAtIndexPath:
方法中,您应该执行以下操作:
- (void)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableView *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
int base = pagecontrol.currentPage * 10;
int index = base + indexPath.row;
NSString *text = objectArray[index];
cell.textLabel.text = text;
return cell;
}
这是您的numberOfSectionsInTableView:
和tableView:numberOfRowsInSection:
方法的补充。
这就是你所需要的一切。
BTW - 案件很重要。不要用小写字母输入所有内容。使用正确的盒子正确输入。答案 1 :(得分:0)
您在分页中使用常量行来使用tableview中的部分。它区分页面中的行, 像这样:
在tableview中设置节数:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 4;
}
// Set rows in section
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
switch(section){
case 0:
return 10;
break;
case 1:
return 10;
break;
.....
.....
}
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *FirstLevelCell= @"FirstLevelCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:FirstLevelCell];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstLevelCell] autorelease];
}
switch([indexPath section]){
case 0:
{
//Add your code
}
break;
case 1:
{
//Add your code
}
break;
.........
.........
.........
.........
.........
}
}
//Reload table view
[self.tableView reloadData];