TableView从Web Service加载行

时间:2011-08-11 11:30:59

标签: iphone web-services tableview

我尝试使用xCode将我的Web服务中的行加载到iPhone项目中的tableview对象中。

我使用viewDidLoad方法来加载项目,在这个方法中我使用以下代码调用我的Web服务:

eenAccesoCupon* Servicio = [[eenAccesoCupon alloc] init];  

Servicio.logging=NO;
[Servicio GetCuponesEntrantes:self action:@selector(GetCuponesEntrantesHandler:) UsuarioActivo: 4];

我有一个NSMutableArray(名为listOfItems),用于将行加载到TableView。如果我将此数组中的项添加到GetCuponesEntrantesHandler中,则tableview不会显示任何行。此处理程序的sourceCode如下:

(void) GetCuponesEntrantesHandler: (id) value {

    // Handle errors
    if([value isKindOfClass:[NSError class]]) {
        NSLog(@"%@", value);
        return;
    }

    // Handle faults
    if([value isKindOfClass:[SoapFault class]]) {
        NSLog(@"%@", value);
        return;
    }               

    // Do something with the NSMutableArray* result
    NSMutableArray* listOfItems = (NSMutableArray*)value;

}

似乎在调用Web方法之前加载了TableView行,因此,在调用Web服务之前调用tableview方法如numberOfRowsInSection和cellForRowAtIndexPath。如果我像这样加载viewDidLoad中的行项:

(void)viewDidLoad {
    [super viewDidLoad];

    //Initialize the array.
    listOfItems = [[NSMutableArray alloc] init];

    //Add items
    [listOfItems addObject:@"Iceland"];
    [listOfItems addObject:@"Greenland"];
    [listOfItems addObject:@"Switzerland"];
    [listOfItems addObject:@"Norway"];
    [listOfItems addObject:@"New Zealand"];
    [listOfItems addObject:@"Holland"];
    [listOfItems addObject:@"Ireland"];

    //Set the title
    self.navigationItem.title = @"Countries";

    eenAccesoCupon* Servicio = [[eenAccesoCupon alloc] init];

    Servicio.logging=NO;
    [Servicio GetCuponesEntrantes:self action:@selector(GetCuponesEntrantesHandler:) UsuarioActivo: 4];
    }

在这种情况下,tableview对象只显示listOfItems中的这7个值加载,从不加载GetCuponesEntrantesHandler中的任何项。

有人知道这是什么问题吗?

1 个答案:

答案 0 :(得分:0)

我认为GetCuponesEntrantes:方法异步使用网络。这意味着一旦表视图已加载并显示,它将调用处理程序。 要强制表视图重新加载,只需调用:

[tableView reloadData]

 NSMutableArray* listOfItems = (NSMutableArray*)value;
赋值之后,

在处理程序方法的末尾。