2

選択する国が設定された TableView をプロジェクトに追加しています。新しいファイル (iPad+XIB の UITableView サブクラス) を追加し、トリガー IBAction コード (デフォルトの国が正しくない場合にテキストフィールドを編集) を記述し、いくつかの接続を行い、空のテーブル ビューが表示されます。いくつかのチュートリアルを読みましたが、問題を特定できません:単語を含む配列が - (void)viewDidLoad にロードされると、アプリは次の警告でクラッシュします:

2012-05-04 12:34:36.740 pruebaF1[4017:f803] * -[UITableView _createPreparedCellForGlobalRow:withIndexPath:] でのアサーションの失敗、/SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:6061 2012-05-04 12: 34:36.741 pruebaF1[4017:f803] *キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: 'UITableView dataSource は tableView:cellForRowAtIndexPath からセルを返す必要があります:'...

CountryViewWController 接続:

ファイル所有者の接続 アウトレット データソース -> ファイルの所有者 デリゲート -> ファイルの所有者 参照するアウトレット ビュー -> ファイルの所有者

コード:

//  CountryTableVieWController.h
#import <UIKit/UIKit.h>
@interface CountryTableVieWController :      
UITableViewController<UITableViewDelegate,UITableViewDataSource> 

{
    NSMutableArray *countriesArray;
    NSArray *countryArray;
}
@end

//  CountryTableVieWController.m
#import "CountryTableVieWController.h"
#import "pruebaF1SecondViewController.h"

@interface CountryTableVieWController ()
@end

@implementation CountryTableVieWController

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

- (void)viewDidLoad
{   

    [super viewDidLoad];

    countriesArray = [[NSMutableArray alloc] initWithObjects:@"Austria", @"Italy", @"France",nil];
}

前もって感謝します。

4

1 に答える 1

0

UITableView のデリゲート メソッドを実装する必要があります。

これを見てください:http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/CreateConfigureTableView/CreateConfigureTableView.html#//apple_ref/doc/uid/TP40007451-CH6-SW10

それを考える最も簡単な方法は、あなたの UITableView があなたのコードにセルに何を入れるべきかを尋ねているということです。これらのメソッドを使用して、テーブル ビューとその中の UITableViewCells を構成します。

次のようなものが必要になります。

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    [countriesArray count];
}


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

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

    NSString *country  = [countriesArray objectAtIndex:indexPath.row];
    cell.textLabel.text = country;
    return cell;
}
于 2012-05-04T11:40:04.293 に答える