无法在tableview

时间:2017-03-12 10:39:52

标签: ios objective-c uitableview tableviewcell completionhandler

我从服务器获取数据而无法在tableview中显示数据...我在jsonarray变量中存储数据...但显示jsonarray.count作为零外部完成处理程序。 (没有行numberOfRowsInSection)。

@interface Staffdir ()
@property(nonatomic,strong) NSMutableArray* jsonarr;
@end

@implementation Staffdir

- (void)viewDidLoad {

    _namesarr=[[NSMutableArray alloc]init];
    _occupationarr=[[NSMutableArray alloc]init];
    _Phonearr=[[NSMutableArray alloc]init];
    _faxnumarr=[[NSMutableArray alloc]init];

    NSMutableURLRequest*req=[[NSMutableURLRequest alloc]init];
    NSURL*url=[NSURL URLWithString:@"http:someurl"];
    [req  setURL:url];


        [[[NSURLSession sharedSession]dataTaskWithRequest:req completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            self.jsonarr = [NSJSONSerialization JSONObjectWithData:data
                                                           options:kNilOptions
                                                             error:&error];

            NSDictionary *dict=[[NSDictionary alloc]init];

            for(int i=0;i<self.jsonarr.count;i++){

                dict=[self.jsonarr objectAtIndex:i];

                [_namesarr addObject:[dict objectForKey:@"Name"]];
                [_faxnumarr addObject:[dict objectForKey:@"Fax_Number"]];
                [_Phonearr addObject:[dict objectForKey:@"Phone"]];
                [_occupationarr addObject:[dict objectForKey:@"Job_Title"]];
            }
        }] resume];


    [self.tableview reloadData];
    [super viewDidLoad];

    // Do any additional setup after loading the view.
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.jsonarr.count;
}

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

    Staffcustom *cell= [tableView dequeueReusableCellWithIdentifier:@"cell"];

    if (cell == nil) {
        cell = [[Staffcustom alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }

    cell.namelabel.text=[_namesarr objectAtIndex:indexPath.row];
    cell.namelabel.textColor = [UIColor blueColor];
    cell.occupationlabel.textColor=[UIColor colorWithRed:0.5 green:0.0 blue:1 alpha:1.0];
    cell.occupationlabel.text=[_occupationarr objectAtIndex:indexPath.row];
    cell.phonelabel.text=@"12345678";
    cell.faxnumlabel.text=@"12345678";

    UIView * additionalSeparator = [[UIView alloc] initWithFrame:CGRectMake(0,cell.frame.size.height-1,cell.frame.size.width,0.1)];
    additionalSeparator.backgroundColor = [UIColor blueColor];

    [cell addSubview:additionalSeparator];

    return cell;
}

- (IBAction)Btn_Back:(id)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

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

1 个答案:

答案 0 :(得分:1)

试试这个:

从服务器获取数据

    [json PostMethod:method parameters:parameter success:^(NSDictionary *responseDict){

        response=[[NSMutableArray alloc]init];
        for (int i=0; i < [[responseDict valueForKey:@"transactions"] count]; i++) {
            [response addObject:[[responseDict valueForKey:@"transactions"]objectAtIndex:i]];
        }

        [self.tableView reloadData];

TableviewCell格式

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

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

        if ([response count]  > 0) {
             //creating the status lable
            UILabel * name = [[UILabel alloc]initWithFrame:CGRectMake( 80*XScale, 25*YScale, XScale*200, YScale*15)];

            name.font = [UIFont fontWithName:@"STHeitiSC-Medium" size:12.0f];
            NSString *time=[[response objectAtIndex:indexPath.row]valueForKey:@“name”];
            [cell.contentView addSubview:name];

检查一下,如果您仍然面临错误更新我.i会有所帮助,如果您提供您的回复,它将帮助我轻松解决问题。