0

さて、私はiPhoneアプリケーションを作成していて、グループ化されたテーブルビューにデータをロードするために、データモデルを作成しました。

DataModel.m

#import "GeometryDataModel.h"

@implementation GeometryDataModel
@synthesize titleGeo =_titleGeo;

-(id)initWithTitleGeo:(NSString *)titleGeo
{
    if ((self = [super init])) {
        self.titleGeo = titleGeo;
    }
    return self;
}@end

それから私はデータテーブルを書き続けました...

DataTable.m
#import "GeometryTableData.h"
#import "GeometryDataModel.h"

@implementation GeometryTableData
@synthesize dataGeo = _dataGeo;
@synthesize thumbImageGeo = _thumbImageGeo;

- (id)initWithTitleGeo:(NSString *)titleGeo thumbImageGeo:(UIImage *)thumbImageGeo {
    if ((self = [super init]))
    {
        self.dataGeo = [[GeometryDataModel alloc] initWithTitleGeo:titleGeo];
        self.thumbImageGeo = _thumbImageGeo;
    }

    return self;
}
@end

次に、ViewControllerを作成してすべてを設定しました

ViewController.m

#import "GeometryViewController.h"
#import "GeometryTableData.h"
#import "GeometryDataModel.h"




@interface GeometryViewController ()

@end

@implementation GeometryViewController
@synthesize geoCalculatorList = _geoCalculatorList;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{


        [super viewDidLoad];


    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

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

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _geoCalculatorList.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *geoCell = [tableView dequeueReusableCellWithIdentifier:@"Geometry"];
    GeometryTableData *geoTableStuff = [self.geoCalculatorList objectAtIndex:indexPath.row];
    geoCell.textLabel.text = geoTableStuff.dataGeo.titleGeo;
    geoCell.imageView.image = geoTableStuff.thumbImageGeo;
    return geoCell;
}

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.
    /*
     <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:detailViewController animated:YES];
     */
}

@end

そして最後に、AppDelegate.mファイルでそれをテーブルに実装します。

sectionOne = [[TableData alloc] initWithTitle:@"A cell" thumbImage:[UIImage
     imageNamed:@"none.png"]];
sectionTwo = [[TableData alloc] initWithTitle:@"Another separated cell" thumbImage:[UIImage
    imageNamed:@"none.png"]];

NSMutableArray *TableData = [NSMutableArray arrayWithObjects:sectionOne,sectionTwo, nil];

UITabBarController * tabController = (UITabBarController *) self.window.rootViewController;
ViewController * algebraController = [tabController.viewControllers objectAtIndex:0];
Controller.calculatorList = TableData;

私の質問は、グループ化されたテーブルビューでセクションを作成する方法です。たとえば、現在のシステムを使用して、「sectionOne」と「sectionTwo」をテーブルの異なるセクションに配置するにはどうすればよいですか。

ありがとう!!!

4

1 に答える 1

1

「sectionOne」と「sectionTwo」を別のセクションに入れる意味がわかりません。それらを断面図にしますか? 一般に、単純な配列よりも複雑な配列を使用して、データをセクションに配置します。いくつかの形式を取ることができますが、配列の配列がおそらく最も単純です。データがそのように設定されている場合は、numberOfSectionsInTableView で theData.count を渡し、numberOfRowsInSection で [[theData indexAtObject:section] count] を渡します。cellForRowAtIndexPath では、次のようなものを使用します。

cell.textLabel.text = [[theData objectAtIndex:indexPath.section] objectAtIndexPath:indexPath.row];

新しい配列構文を使用して、次のように短縮できます。

cell.textLabel.text = theData[indexPath.section][indexPath.row];
于 2013-01-24T03:52:38.343 に答える