0

iPhoneアプリにSudzCを使用しています。ASP.Net Web サービスを正常に呼び出し、必要なデータを tableData という NSMutable 配列にプルしています。tableData の内容を表示する tableView があります。ただし、これは機能していません。私はこの問題を何時間も見てきました。私はObjective Cの世界に非常に慣れていないので、私の側の小さな見落としだと思っています。TableView を ViewController (デリゲート/データソース) にもリンクしました。

これが私が持っているコードです:

#import "ViewController.h"
#import "DocumentServiceJSONService.h"

@interface ViewController ()

@end

@implementation ViewController
NSMutableArray *tableData;


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

-(void)viewWillAppear:(BOOL) animated {
    tableData = [[NSMutableArray alloc] init];
    DocumentServiceJSONService* service = [[DocumentServiceJSONService alloc] init];
    [service GetAllEMSDocumentsXMLAsString: self action:@selector(handleGetAllEMSDocuments:)];
    [super viewWillAppear:animated];
}


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

-(void) handleGetAllEMSDocuments:(id) result {

  if ([result isKindOfClass:[NSError class]]) {
        //if an error has occurred, handle it
        return;
    }

    if([result isKindOfClass: [SoapFault class]]) {
        return;
    }

    NSString* xmlString = result;


    CXMLDocument *xmlDoc = [[CXMLDocument alloc] initWithXMLString:xmlString options:0 error:nil];
    NSArray *nodes = NULL;
    nodes = [xmlDoc nodesForXPath:@"//EMSDocuments" error:nil];

    for (CXMLElement *node in nodes) {
        NSMutableDictionary *item = [[NSMutableDictionary alloc] init];
        int counter;

        for (counter = 0; counter < [node childCount]; counter++) {
        [item setObject:[[node childAtIndex:counter] stringValue] forKey:[[node childAtIndex:counter] name]];
        }
    //[item setObject:[[node attributeForName:@"DisplayName"] stringValue] forKey:@"DisplayName"];
        NSString *displayName = [item objectForKey:@"DisplayName"];
        [tableData addObject:displayName];
    }


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

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

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

    cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
    return cell;
}

@end

アドバイスをいただければ幸いです。

4

1 に答える 1

1

.hにデリゲートとデータソースが正しく設定されていることを確認してください。

@interface YourViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

また、ユーザーインターフェイスにXIBを使用している場合は、テーブルビューがデータソースおよびデリゲートとしてファイルの所有者に接続されています。 ここに画像の説明を入力してください

-編集:テーブルビュー用のアウトレットを作成します: ここに画像の説明を入力してください

于 2012-12-28T20:42:32.960 に答える