-1

ShoppingLists通过WCF电话获得了一些清单。

我的代码:

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

}

当我在 Xcode 中运行应用程序时没有任何反应。我可以在日志窗口中看到日志

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

确实返回一个值(4),但NSLog我在CellForRowAtIndexPath方法中所做的没有被打印出来。我那里也有一个断点,没有达到。为什么它没有进入方法?

4

3 回答 3

4

这些方法对于确定 TableView 应该显示多少数据非常numberOfSectionsInTableView重要numberOfRowsInSection。它应该看起来像这样:

- (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
}
于 2013-05-31T07:19:33.290 回答
0

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

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

于 2013-05-31T07:15:00.940 回答
0

因为您注释掉了这些方法:numberOfSectionsInTableView 和 numberOfRowsInSection,所以您的 tableView 将是 0 节和 0 行,所以该方法

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

没有被访问。

于 2013-05-31T07:45:45.627 回答