0

私のアプリではUITableView、最初のセルと最後の 3 つのセルの内容が固定されています。ただし、これらのセルの内容の間では、配列の数と内容によって異なります。

例: 最初のセル + 配列カウント + 最後の 3 つのセル.

配列の数は常に異なります。上記で説明したように、テーブルビューを作成するにはどうすればよいですか。

4

3 に答える 3

3

//最初のセル + [動的配列] + 最後の 3 つの固定セルの作業コード

  #import "tableTOViewController.h"

@interface tableTOViewController ()

@end

@implementation tableTOViewController

- (void)viewDidLoad
{
 myArray=[[NSArray alloc] init];
 myArray=[NSArray arrayWithObjects:@"Aman",@"Atul",@"Karan",@"Yen",@"Chan",@"Lee", nil];

 lastFixedArray=[[NSArray alloc] init];
 lastFixedArray=[NSArray arrayWithObjects:@"Snakes",@"Food",@"Drink", nil];

    tblView.delegate=self;
    tblView.dataSource=self;
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
 return [myArray count]+4;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *cellIdentifier=@"cellIdentifier";
 UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

 if (cell==nil) {
  cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
 }

 if (indexPath.row==0) 
  cell.textLabel.text=@"First Cell";
 else if (indexPath.row>[myArray count])
  cell.textLabel.text=[lastFixedArray objectAtIndex:([indexPath row]-[myArray count]-1)];
 else
  cell.textLabel.text=[myArray objectAtIndex:indexPath.row-1];

 return cell;
}


@end
于 2012-12-31T08:09:11.837 に答える
2

最後の 3 つのセルにサブビューを追加する場合は、次の条件を使用できます

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *cellIdentifier=@"cellIdentifier";
 UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

 if (cell==nil) {
  cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
 }

 if (indexPath.row==0) 
  cell.textLabel.text=@"First Cell";
 else if (indexPath.row>[myArray count])
 {
  int k=([indexPath row]-[myArray count]-1);

  switch (k) {
   case 0:
    [cell.contentView addSubview:thirdLastView];
    break;
   case 1:
    [cell.contentView addSubview:secondLastView];
    break;
   case 2:
    [cell.contentView addSubview:lastView];
    break;
  }
    cell.textLabel.text=[lastFixedArray objectAtIndex:k];
 }
 else
  cell.textLabel.text=[myArray objectAtIndex:indexPath.row-1];

 return cell;
}
于 2012-12-31T09:55:12.877 に答える
1

numberOfRowsメソッドでは、値を次のように返します

4 + [array count];

cellForRowAtIndexPathスイッチをオンにして、それindexPath.rowに応じてセルの内容を入力します。

于 2012-12-31T08:06:47.423 に答える