UITableView单元格未被填充

问题描述:

我通过WCF调用获取了一些ShoppingLists的列表。UITableView单元格未被填充

我的代码:当我运行在Xcode应用

#import "ListTableViewController.h" 
#import "ListServiceSvc.h" 

@interface ListTableViewController(){ 
    // NSMutableArray *shoppingLists; 
} 
@property (nonatomic, retain) NSMutableArray *shoppingList; 

@end 

@implementation ListTableViewController 

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

- (void)viewDidLoad 
{ 
    _shoppingList = [NSMutableArray array]; 
    [self loadListsFromRemoteServer]; 
    [super viewDidLoad]; 
} 

-(void) loadListsFromRemoteServer 
{ 
    NSString *uname = @"Test4"; 
    NemListBinding *binding = [[ListServiceSvc NemListBinding]initWithAddress:@"http://balder.ucn.dk/dm76_gr5/WCF.ListService.svc/custom?singleWsdl"]; 
    binding.logXMLInOut=YES; 
    ListServiceSvc_GetShoppingListsWithUname *parms = [[ListServiceSvc_GetShoppingListsWithUname alloc]init]; 
    parms.uname = uname; 
    [binding GetShoppingListsWithUnameAsyncUsingParameters:parms delegate:self]; 
} 

- (void) operation:(NemListBindingOperation *)operation completedWithResponse:(NemListBindingResponse *)response 
{ 
    NSArray *responseHeaders = response.headers; 
    NSArray *responseBodyParts = response.bodyParts; 
    //[NSThread sleepForTimeInterval:5.0]; 
    NSMutableArray *shoppingListFromWebserver = [[NSMutableArray alloc] init]; 
    // step 1 fill in the blanks. 
    for(id header in responseHeaders) { 
     // here do what you want with the headers, if there's anything of value in them 
    } 
    for (id mine in responseBodyParts) 
    { 
     if ([mine isKindOfClass:[ListServiceSvc_GetShoppingListsWithUnameResponse class]]) 
     { 
      for (id slist in [[mine GetShoppingListsWithUnameResult] ShoppingList]) 
      { 
       [shoppingListFromWebserver addObject:slist]; 
       NSLog(@"new list :: RESPONSE FROM SERVER :: nList %@", [slist ShoppingListName]); 
       //self.result.text = [self.result.text stringByAppendingString:[slist shoppingListName]]; 
      } 
     } 
    } 
    [self performSelectorOnMainThread:@selector(updateNewView:) withObject:shoppingListFromWebserver waitUntilDone:NO]; 
} 

-(void) updateNewView:(NSMutableArray*) result 
{ 
    _shoppingList = result; 
    NSLog(@"new list - number of news :: %u", [_shoppingList count]); 
    [self.tableView reloadData]; 
} 

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

#pragma mark - Table view data source 

//- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
//{ 
// return _shoppingList.count; 
//} 

//- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
//{ 
// // Return the number of rows in the section. 
// return 10; 
//} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"cellforrow"); 
    static NSString *CellIdentifier = @"ListCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 
    //cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    // Configure the cell... 

    id shopList = [_shoppingList objectAtIndex:indexPath.row]; 

    cell.textLabel.text = [shopList ShoppingListName]; 
    return cell; 

} 

什么也没有发生。我可以在日志窗口中的日志

NSLog(@"new list - number of news :: %u", [_shoppingList count]); 

确实返回一个值(4),但NSLog我已经在CellForRowAtIndexPath方法制成的不打印它看到的。我也有一个断点,没有达到。为什么它没有得到该方法?

这些方法,numberOfSectionsInTableViewnumberOfRowsInSection ..它应该是这个样子是很重要的,确定的TableView应该表现出什么样的数据的数量numberOfSectionsInTableView和numberOfRowsInSection,你tableView将是0节和0行,所以方法

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 

没有被访问。

+0

非常感谢你 - 不知道我错过了什么 – catu

你不应该注释掉这些方法:numberOfSectionsInTableViewnumberOfRowsInSection

至少需要numberOfRowsInSection,并且必须返回您想要/需要的行数。 就我所知,这应该是_shoppingList.count你的情况。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; // the number of different sections in your table view 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [_shoppingList count]; // the number of data in your shopping list 
} 

因为你注释掉这些方法: