Nishanth
Nishanth

Reputation: 33

Unable to display data in tableview

I'm fetching data from server and unable to display it in tableview ...i'm storing data in jsonarray variable..but its showing jsonarray.count as zero outside completion handler. (in no of rows 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.
}

Upvotes: 0

Views: 90

Answers (1)

ATAM
ATAM

Reputation: 11

try this :

geting data from the server

    [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 Format

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

check it ,if u still facing error update me .i will helps ,if u provide ur response it will helps me to resolve issue easy.

Upvotes: 1

Related Questions