1

UITableViewを使用してグループ化されたデータを入力しようとしていNSMutableArrayます。配列内の各要素に独自のセクションを持たせたいです。すなわち:1つのセクションごとに1つの要素(1つの行)。

これは私がこれまでに書いた私のコードです。

#import "MailViewController.h"

@interface MailViewController ()

@end

@implementation MailViewController

NSMutableArray *mailboxes;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {

    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    mailboxes = [[NSMutableArray alloc] initWithObjects:@"Inbox", @"Drafts", @"Sent Items", nil];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return mailboxes.count;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.text = [mailboxes objectAtIndex:indexPath.row];

    return cell;
}

@end

現在、これはどのように見えるかです。

ここに画像の説明を入力してください

上記の方法でこれを取得するにはどうすればよいですか?(最初のセクション:受信トレイ、2番目のセクション:ドラフト、3番目のセクション:送信済みアイテムなど)近づきましたが、まだ完全ではありません。

ありがとうございました。

4

4 に答える 4

5

変更する必要があります:

cell.textLabel.text = [mailboxes objectAtIndex:indexPath.row];

cell.textLabel.text = [mailboxes objectAtIndex:indexPath.section];

これらの行はcellForRowAtIndexPath:メソッドに含める必要があります。

配列インデックスは、行ではなくセクションに基づいている必要があります。行は常にゼロに固定されます。

于 2013-03-08T07:17:10.197 に答える
1

交換

    cell.textLabel.text = [mailboxes objectAtIndex:indexPath.row];

    cell.textLabel.text = [mailboxes objectAtIndex:indexPath.section];
于 2013-03-08T07:17:52.787 に答える
0

セクション見出しも必要な場合は、を実装- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)sectionし、セクションに基づいて文字列を返します。

他の回答のコードを使用すると、各セクション内に1つのセルを表示できます。私がやりたいのは、事前に作成されたセルの多次元NSArrayを用意することです。それらが必要な場合は、インデックスに登録されます[section][row]

現在、セクションのみを含む1つの配列があり、それらに行としてアクセスしようとしています(他の回答が示唆しているように)。1つのテーブルグループにさらに多くのメールボックスがある場合、コードは機能しません。

于 2013-03-08T08:06:20.197 に答える
-1
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
    return [mailboxes count];
 }

   - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section
  {
   return 1;
  }

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
   static NSString *CellIdentifier = @"Cell";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault     reuseIdentifier:CellIdentifier];
    }
      switch(indexpath.section){
             case 0:
              cell.textLabel.text = [mailboxes objectAtIndex:indexPath.section];
              case 1:
               cell.textLabel.text = [mailboxes objectAtIndex:indexPath.section];
               case 2:
               cell.textLabel.text = [mailboxes objectAtIndex:indexPath.section];
                default:
                 break;
             }
   return cell;
 }
于 2013-03-08T08:16:46.813 に答える