Adnan Khan
Adnan Khan

Reputation: 917

'-[UITableViewController loadView] loaded the "MySubscriptionsViewController" nib but didn't get a UITableView.'

I updated my xcode using 6.1 simulator, my app was working fine for 5.1 simulator,

now i am getting the following error :

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "MySubscriptionsViewController" nib but didn't get a UITableView.' 

my header file:

#import <UIKit/UIKit.h>

@interface MySubscriptionsViewController : UITableViewController{

}

@property (nonatomic,retain) NSString *serverAddress;
@property (nonatomic, retain) UITextField *airportField;
@property (nonatomic, retain) NSMutableArray *airportList;

@property (nonatomic, retain) NSMutableArray *colCode;
@property (nonatomic, retain) NSMutableArray *colAirport;
@property (nonatomic, retain) NSMutableArray *colStartDate;
@property (nonatomic, retain) NSMutableArray *colStartTime;
@property (nonatomic, retain) NSMutableArray *colEndTime;
@property (nonatomic, retain) NSMutableDictionary *tempAirport;


@property (nonatomic,strong) NSDictionary *countryList;
@property (nonatomic,strong) NSArray *countryKeys;

- (IBAction)Meetup:(id)sender;
- (IBAction)ViewBeacon:(id)sender;
-(IBAction)gotoHome:(id)sender;

-( void)beacon:(NSString *)theStr;

@end

my m file:

#import "MySubscriptionsViewController.h"
#import "MybeaconsViewController.h"
#import "SBJsonParser.h"
#import "GridTableViewCell.h"
#import "MeetupViewController.h"
#import "ViewBeaconViewController.h"
#import "DataClass.h"
#import "MemberPanelViewController.h"


@interface MySubscriptionsViewController ()

@end

@implementation MySubscriptionsViewController
@synthesize countryList,countryKeys,serverAddress,airportField,airportList,tempAirport,colStartTime,colEndTime,colStartDate,colAirport,colCode;


- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}




- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0,0);
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

    DataClass *obj=[DataClass getInstance];  



    // serverAddress = @"http://www.cloudnetpk.com/transbeacon_design/services";
    NSString *strURL = [NSString stringWithFormat:@"http://www.cloudnetpk.com/transbeacon_design/services/get_my_beacon_subscriptions.php?code=%@",obj.str];
    NSLog(@" url => %@",strURL);
    NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];
    NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding];

    SBJsonParser *parser = [[SBJsonParser alloc] init];
    NSArray *datos = [parser objectWithString:strResult error:nil];

    tempAirport = [[NSMutableDictionary alloc] init];
    airportList = [[NSMutableArray alloc] init];
    colStartTime = [[NSMutableArray alloc] init];
    colEndTime = [[NSMutableArray alloc] init];
    colStartDate= [[NSMutableArray alloc] init];
    colAirport= [[NSMutableArray alloc] init];
    colCode= [[NSMutableArray alloc] init];
    countryList = datos;

    NSLog(@"beacons count %d",datos.count);
    for (int i=0; i<datos.count; i++){
        int a=0;

        NSString *startDate = [[[datos objectAtIndex:i] objectForKey:@"start_date" ] lowercaseString];
        NSString *airPort= [[[datos objectAtIndex:i] objectForKey:@"airport" ] lowercaseString];
        NSString *startTime = [[[datos objectAtIndex:i] objectForKey:@"start_time" ] lowercaseString];
        NSString *endTime = [[[datos objectAtIndex:i] objectForKey:@"end_time" ] lowercaseString];
        NSString *code = [[[datos objectAtIndex:i] objectForKey:@"code" ] lowercaseString];

        //NSLog(@" here =>%@",code);
        [colStartDate insertObject:startDate atIndex:i ];
        [colAirport insertObject:airPort atIndex:i ];
        [colStartTime insertObject:startTime atIndex:i ];
        [colEndTime insertObject:endTime atIndex:i ];
        [colCode insertObject:code atIndex:i];


        //[ tempAirport setObject:lcString  forKey:lcStringValue];
    }



    [super viewDidLoad];





}





- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [countryList count];
}

/*
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    
 UITableViewCell *cell =[[UITableViewCell alloc]
 initWithStyle:UITableViewCellStyleDefault
 reuseIdentifier:@"cell"];
 NSString *currentCountryName=[countryKeys objectAtIndex:[indexPath row]];
 [[cell textLabel] setText:currentCountryName];
 //cell.detailTextLabel.text=@"testing here ";
 return cell;
 }
 */
-(UITableViewCell *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    static NSString *CellIdentifier = @"SectionHeader"; 
    //UITableViewCell *headerView = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(10,0,300,60)] ;

    UIImage *myImage=[UIImage imageNamed:@"top_bar.png"];
    UIImageView *imageView =[[UIImageView alloc] initWithImage:myImage];
    imageView.frame= CGRectMake(0, 0, 400, 50);
    [headerView addSubview:imageView];   



    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(110,3, tableView.bounds.size.width - 170,40)];  
    label.text = @"Subscriber List";
    label.textColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; 
    label.font = [UIFont fontWithName:@"Arial-BoldMT" size:16]; 
    label.backgroundColor = [UIColor clearColor];
    [headerView addSubview:label];



    UIButton *circularButton = [UIButton buttonWithType:UIButtonTypeCustom];    
    CGRect circularRect = CGRectMake(5.0, 5, 58.0, 32.0);
    [circularButton setFrame:circularRect];
    [circularButton addTarget:self action:@selector(Meetup:) forControlEvents:UIControlEventTouchUpInside]; 
    UIImage *buttonImage = [UIImage imageNamed:@"back_btn.png"];
    [circularButton setImage:buttonImage forState:UIControlStateNormal];
    [headerView addSubview:circularButton];    


    UIButton *homeButton = [UIButton buttonWithType:UIButtonTypeCustom];    
    CGRect circularRectHome = CGRectMake(250.0, 5, 58.0, 32.0);
    [homeButton setFrame:circularRectHome];
    [homeButton addTarget:self action:@selector(gotoHome:) forControlEvents:UIControlEventTouchUpInside]; 
    UIImage *buttonImageHome = [UIImage imageNamed:@"home_btn.png"];
    [homeButton setImage:buttonImageHome forState:UIControlStateNormal];
    [headerView addSubview:homeButton];   

    return headerView;
}  


-(IBAction)gotoHome:(id)sender{
    // redirect
    MemberPanelViewController *window =[[MemberPanelViewController alloc]init];
    [self presentModalViewController:window animated:YES];

}


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{

    return 50;
}


- (IBAction)Meetup:(id)sender{
    NSLog(@" button clicked here");
    MeetupViewController *window =[[MeetupViewController alloc]init];
    [self presentModalViewController:window animated:YES];



}

- (IBAction)ViewBeacon:(id)sender{
    ViewBeaconViewController *window=[[ViewBeaconViewController alloc]init];
    [self presentModalViewController:window animated:YES];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


    static NSString *CellIdentifier = @"Cell";

    GridTableViewCell *cell = (GridTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[GridTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.lineColor = [UIColor blackColor];
    }

    // Since we are drawing the lines ourself, we need to know which cell is the top cell in the table so that
    // we can draw the line on the top
    if (indexPath.row == 0)
        cell.topCell = YES;
    else
        cell.topCell = NO;

    // Configure the cell.
    //cell.cell1.text = [NSString stringWithFormat:@"%i",indexPath.row];
    //cell.cell2.text = [NSString stringWithFormat:@"%i", indexPath.row];
    //cell.cell3.text = @"test here text";



    cell.cell1.text =[colStartDate objectAtIndex:indexPath.row];
    cell.cell2.text =[colAirport objectAtIndex:indexPath.row];
    cell.cell3.text =[colStartTime objectAtIndex:indexPath.row];
    cell.cell4.text = [colEndTime objectAtIndex:indexPath.row];

    NSString *value = [colCode objectAtIndex:indexPath.row];
    NSLog(@" value => %@",value);

    UIButton *circularButton = [UIButton buttonWithType:UIButtonTypeCustom];    
    CGRect circularRect = CGRectMake(260.0, 2, 60.0, 40.0);
    [circularButton setFrame:circularRect];
    [circularButton addTarget:self action:@selector(beacon:) forControlEvents:UIControlEventTouchUpInside];

    circularButton.tag=value;
    UIImage *buttonImage = [UIImage imageNamed:@"view.png"];
    [circularButton setImage:buttonImage forState:UIControlStateNormal];
    [cell.contentView addSubview:circularButton];    

    return cell;
}

-( void)beacon:(NSString *)theStr{
    NSInteger *tid = ((UIControl*)theStr).tag;
    NSLog(@" here is parameter %@",tid);


    ViewBeaconViewController *window=[[ViewBeaconViewController alloc]init];
    //   window.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    window.theDataYouWantToPass =tid; 
    window.lastscreen =@"subscription"; 
    [self presentModalViewController:window animated:YES];

}



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    /*
     <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:detailViewController animated:YES];
     [detailViewController release];
     */
}

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



- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

Upvotes: 4

Views: 6039

Answers (2)

cam_271
cam_271

Reputation: 349

I just had the same issue; I fixed it by subclassing my newly created viewController file.

I was subclassing my newly created tableView file by mistake.

Or

If you want the table view to be the root view in your initial view (it will fill up the whole screen with cells) then you will delete the view in the project outline. second you will control drag the table view in the project outline to the menu (above it) and then you will click delegate for the outlet and do the same for the data source. finally you will open the table view controller file and add UITableViewDelegate and UITableViewDataSource so that it looks like this (using your created name of course).

class MainMenuTableViewController: UITableViewController, UITableViewDelegate, UITableViewDataSource

Hope this helps.

Upvotes: 0

Nitin Gohel
Nitin Gohel

Reputation: 49730

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "MySubscriptionsViewController" nib but didn't get a UITableView.' This error Ocurce becouse some bellow issue.

I think the problem is because you are subclassing UITableViewController instead of UIViewController. you need to put UIViewController as a subclass and connect IBoutlet of UITableview in XIB with its delegare. your TableVIew in UIView of XIB so you just connect fileOWner to UIView as a View and UITableview with your TableView Outlate.

@interface MySubscriptionsViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>

OR

else there you remaining some referance of old copy you trying with restart xcode and remove catch or clean derive data

Upvotes: 12

Related Questions