2011-08-11 47 views
0

我嘗試使用xCode將我的Web服務中的行加載到iPhone項目中的tableview對象中。TableView從Web服務加載行

我使用viewDidLoad方法以加載的項目,在這個方法我打電話給我的web服務使用此代碼:

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

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

我有一個NSMutableArray的(稱爲LISTOFITEMS),我用它來行加載到TableView中。如果我將這些項目添加到GetCuponesEntrantesHandler中,則表格視圖不會顯示任何行。此處理程序的源代碼如下:

(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; 

} 

看來的TableView行就會加載稱爲Web方法之前,因此,實現代碼如下方法,如numberOfRowsInSection和的cellForRowAtIndexPath被稱爲前的Web服務是invoked.If我加載在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]; 
    } 

在這種情況下,實現代碼如下目的僅示出了在本LISTOFITEMS 7個值負載,不會從GetCuponesEntrantesHandler加載的任何項目。

有人知道是什麼問題?

回答

0

我想GetCuponesEntrantes:方法異步處理網絡。這意味着一旦表視圖已經被加載和顯示,它就會調用處理程序。 要強制表視圖重裝只需撥打:

[tableView reloadData]

在處理程序方法結束後,馬上

 NSMutableArray* listOfItems = (NSMutableArray*)value;
分配。