-2

我的情况:

  • 我已经在情节提要中获得datasource并连接delegate
  • 我有我的UITableViewCell和标识符以及定义的代码等。
  • 我有我的array数据UITableView,在调试中我的数据array填充viewDidload方法

所以一切似乎都是正确的,直到我到达cellForRowIndexPathand numberOfRowsInSection。它没有进入方法。当我进一步运行时,调试完成,没有任何故障,只有黑色 UITableView我什么都没有。真的很奇怪,因为我的数组充满了数据,一切都按照应有的方式连接。

需要一些帮助,我现在正在寻找几天!

如果需要代码来帮助,问我。

我的代码:

m.文件:

#import "DagprogrammaDetailViewController.h"

@interface DagprogrammaDetailViewController ()
@end

@implementation DagprogrammaDetailViewController
{
    NSMutableArray *DagprogrammaDetail;
}

@synthesize menuNaam;
@synthesize tableDagprogrammaDetail;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationItem.title = menuNaam;

    NSArray *dagarray = [menuNaam componentsSeparatedByString:@" "];
    NSString *plaatsString = [dagarray objectAtIndex:1];
    plaatsString = [plaatsString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

    //object ophalen
    NSMutableString *urlString = [NSMutableString stringWithFormat:@"http://zesdaagse.mobi-app.be/WCFUrl/MobileService.svc/GetDagprogramma"];
    NSURL *url = [NSURL URLWithString:urlString];
    NSData *data = [NSData dataWithContentsOfURL:url];
    NSError *error;

    NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    NSMutableArray *id = [NSMutableArray array];

    for(NSDictionary *item in json)
    {
        [id addObject:[item objectForKey:@"id"]];
    }

    int plaats = [plaatsString intValue];
    plaats -= 1;
    //id van de dag ophalen
    NSString *idDagprogramma = [id objectAtIndex:plaats];

    urlString = [NSMutableString stringWithFormat:@"http://zesdaagse.mobi-app.be/WCFUrl/MobileService.svc/GetDagprogrammaWedstrijden?id="];
    [urlString appendString:[NSString stringWithFormat:@"%@",idDagprogramma]];

    url = [NSURL URLWithString:urlString];
    data = [NSData dataWithContentsOfURL:url];
    json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    NSMutableArray *idWedstrijdDagprogramma = [NSMutableArray array];
    NSMutableArray *naam = [NSMutableArray array];
    NSMutableArray *uur = [NSMutableArray array];

    for(NSDictionary *item in json)
    {
        [idWedstrijdDagprogramma addObject:[item objectForKey:@"id"]];

        [naam addObject:[item objectForKey:@"naam"]];
        [uur addObject:[item objectForKey:@"uur"]];
    }

    DagprogrammaDetail = [NSMutableArray arrayWithObjects: nil];

    for(int i = 0; i < json.count; i ++)
    {
        NSMutableString *lijn =[NSMutableString stringWithFormat:@"%@", [naam objectAtIndex:i]];
        [lijn appendString:[NSMutableString stringWithFormat:@"%s", "\t \t"]];
        [lijn appendString:[NSMutableString stringWithFormat:@"%@", [uur objectAtIndex:i]]];
        [DagprogrammaDetail addObject:lijn];
    }
}

//methode om aantal items te weten van de array
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [DagprogrammaDetail count];
}
//methode om een item aan een index te koppelen en zichtbaar te maken
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"MenuDetailCell";

    UITableViewCell *cell = [self.tableDagprogrammaDetail dequeueReusableCellWithIdentifier:simpleTableIdentifier];

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

    }
    cell.textLabel.numberOfLines = 1;
    cell.textLabel.text = [DagprogrammaDetail objectAtIndex:indexPath.row];

    return cell;
}

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

@end
4

4 回答 4

1

我很困惑,知道,所以你知道如何解决它吗?Cus 在其他视图控制器中它工作正常并且它是相同的代码和方法。我该怎么办?

  • 冷静下来,重新检查你的代码。我保证这将是一个愚蠢的错误。当您感到沮丧时,任何人都可能会遇到这种情况。

你可以做的事情:

1) NSLog你的numberOfRowsInSection. 请注意,如果它是“0”,那么您cellForRowAtIndexPath将永远不会被调用。

2)如果你使用你的UITableView内部一些UIView,那么你应该添加:

[self.view addSubview:table];

3)不要忘记包括:

@interface yourViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
于 2013-05-21T11:26:44.200 回答
1

我只是在 ViedDidLoad 中更改了一点点并且它工作正常

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationItem.title = menuNaam;

    NSArray *dagarray = [menuNaam componentsSeparatedByString:@" "];

    NSString *plaatsString = [dagarray objectAtIndex:1];
    plaatsString = [plaatsString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

    //object ophalen
    NSMutableString *urlString = [NSMutableString stringWithFormat:@"http://zesdaagse.mobi-app.be/WCFUrl/MobileService.svc/GetDagprogramma"];
    NSURL *url = [NSURL URLWithString:urlString];
    NSData *data = [NSData dataWithContentsOfURL:url];
    NSError *error;

    NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    NSMutableArray *idss = [[NSMutableArray alloc]init];;

    NSLog(@"Json Data =%@",json);
    for(NSDictionary *item in json)
    {
        [idss addObject:[item objectForKey:@"id"]];
    }

    int plaats = [plaatsString intValue];
    plaats -= 1;
    //id van de dag ophalen
    NSString *idDagprogramma = [idss objectAtIndex:0];

    urlString = [NSMutableString stringWithFormat:@"http://zesdaagse.mobi-app.be/WCFUrl/MobileService.svc/GetDagprogrammaWedstrijden?id="];
    [urlString appendString:[NSString stringWithFormat:@"%@",idDagprogramma]];

    url = [NSURL URLWithString:urlString];
    data = [NSData dataWithContentsOfURL:url];
    json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    NSMutableArray *idWedstrijdDagprogramma = [NSMutableArray array];
    NSMutableArray *naam = [NSMutableArray array];
    NSMutableArray *uur = [NSMutableArray array];

    for(NSDictionary *item in json)
    {
        [idWedstrijdDagprogramma addObject:[item objectForKey:@"id"]];

        [naam addObject:[item objectForKey:@"naam"]];
        [uur addObject:[item objectForKey:@"uur"]];
    }

    DagprogrammaDetail = [[NSMutableArray alloc]init];

    for(int i = 0; i < json.count; i ++)
    {
        NSMutableString *lijn =[NSMutableString stringWithFormat:@"%@", [naam objectAtIndex:i]];
        [lijn appendString:[NSMutableString stringWithFormat:@"%s", "\t \t"]];
        [lijn appendString:[NSMutableString stringWithFormat:@"%@", [uur objectAtIndex:i]]];
        [DagprogrammaDetail addObject:lijn];
    }
}

在此处下载我的项目 链接:http ://www.4shared.com/zip/FI1HJV1c/DagprogrammaDetail.html

于 2013-05-21T12:57:56.297 回答
0

如果您不发布完整代码,我们将无法知道发生了什么。显然你错过了一些东西。按照此分步教程对您的代码进行操作,以找到您的问题隐藏的位置。

于 2013-05-21T11:18:13.433 回答
0

我认为您的问题出在UITableViewDataSource协议上。有一种方法叫做: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

您不必实现此方法,因为默认情况下它返回 0。因此,如果您实现此方法并且此方法返回 0,那么您就有问题了。由于您没有任何部分,因此您创建行的数据源方法永远不会被调用,因为您的表格视图中没有任何部分。

为了使它工作,要么你不实施

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

方法,或者它必须至少返回 1。

于 2013-05-21T11:31:00.387 回答