0

私は自分のを呼び出そうとreloadDataしていUITableViewます。インターフェイスビルダーなしでアプリを作成しています。

このコードはInterfaceBuilderで機能しますが、そうでないようには見えません。

コードをInterfaceBuilderで行っていたものと比較すると、ViewControllerをにドラッグするコードのビットが欠落していますUITableView。デリゲートとデータソースが設定され、機能しています。コードに欠けているものはありますか?

編集: これは私のviewDidLoadで設定されています_tableViewにはプロパティが設定されており、合成されています。

//Data is set into an NSArray then copied into an NSMutableArray
_nsarray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL];

_nsmArray = [[NSMutableArray alloc] init];
[_nsmArray addObjectsFromArray:_nsarray];

_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)];
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView];


-(void)refreshTable {
    //_tableView = [[UITableView alloc] initWithFrame:CGRectZero];
    [self.tableView reloadData];
}
4

4 に答える 4

2

テーブルデータをどのように管理していますか?NSArray?

あなたが投稿したものが機能するはずなので、これらの詳細を提供する必要があります:との設定dataSourceと。単に「」する場合は、dataSourceに変更があったことを確認する必要があります。dataSourceに変更が加えられていない場合(つまり、配列にオブジェクトを追加/削除している場合)、何も起こりません。delegatereloadDatareloadData

于 2012-10-03T06:57:44.020 に答える
1

デリゲートとデータソースを正しく設定しましたか?このような:

    [tableView setDelegate:self];
    [tableView setDataSource:self];

次に、メインスレッドでメソッド「reloadData」を呼び出す必要があるため、次のようにメソッド「refreshTable」を呼び出す必要があります。

    [self performSelectorOnMainThread:@selector(refreshTable) withObject:nil waitUntilDone:NO];
于 2012-10-03T07:00:52.273 に答える
0

テーブルビューにデータを表示できるようにするために必要なものは2つだけです。

1)self.tableView必要なときに呼び出すことができるように、テーブルビューを指している必要がありますreloadData

2)テーブルビューのdataSourceプロパティをクラスに割り当てる必要があります。クラスは、UITableViewDataSourceプロトコルから必要なメソッドを実装する必要があります。

于 2012-10-03T07:03:13.243 に答える
0

.hファイルにUITableViewDelegateプロトコルとUITableViewDataSourceプロトコルが追加されていることを確認してください。

@interface YourClassName : UIViewController<UITableViewDelegate, UITableViewDataSource>

次に、テーブルビューデリゲートとdataSourceをselfに設定します。

元:

    [yourTableView setDelegate:self];
    [yourTableView setDataSource:self];
于 2012-10-03T07:09:45.677 に答える