Tableviewcell не загружается

#objective-c #cocoa-touch #xcode

#objective-c #cocoa-touch #xcode

Вопрос:

У меня проблема, которую я не могу решить. Когда я запускаю свое приложение и нажимаю на одну из ячеек табличного представления, эта ячейка не загружает связанный с ней контроллер представления.

Вот копия кода .m

 #import "FirstViewController.h"
#import "arraymap.h"
#import "crackedmap.h"
#import "crisismap.h"
#import "firingrangemap.h"

@implementation FirstViewController
@synthesize imageArray, cellTextArray;

- (void)viewDidLoad
{
    self.title = @"Maps";
    imageArray = [[NSArray alloc] initWithObjects:@"1.png", @"1.png", @"1.png", @"1.png", nil];
    cellTextArray = [[NSArray alloc] initWithObjects:@"cell1", @"cell2", @"cell3", @"cell4", nil];
    [super viewDidLoad];
}

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

/*
 // Override to allow orientations other than the default portrait orientation.
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 // Return YES for supported orientations.
 return (interfaceOrientation == UIInterfaceOrientationPortrait);
 }
 */

// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 4;
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.backgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:[imageArray objectAtIndex:indexPath.row]]] autorelease];

    UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(10, 40, cell.frame.size.width-20, 35)];
    [lab setBackgroundColor:[UIColor clearColor]];
    [lab setText:[cellTextArray objectAtIndex:indexPath.row]];
    [cell.contentView addSubview:[lab autorelease]];

    // Configure the cell.
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 70;
}
/*
 // Override to support conditional editing of the table view.
 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
 {
 // Return NO if you do not want the specified item to be editable.
 return YES;
 }
 */

/*
 // Override to support editing the table view.
 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
 {
 if (editingStyle == UITableViewCellEditingStyleDelete)
 {
 // Delete the row from the data source.
 [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
 }
 else if (editingStyle == UITableViewCellEditingStyleInsert)
 {
 // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
 }   
 }
 */

/*
 // Override to support rearranging the table view.
 - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
 {
 }
 */

/*
 // Override to support conditional rearranging of the table view.
 - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
 {
 // Return NO if you do not want the item to be re-orderable.
 return YES;
 }
 */

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIViewController *viewController = nil;
    switch (indexPath.row) {
        case 0:
            viewController = [[arraymap alloc] initWithNibName:@"arraymap" bundle:nil];
            break;
        case 1:
            viewController = [[crackedmap alloc] initWithNibName:@"crackedmap" bundle:nil];
            break;
        case 2:
            viewController = [[crisismap alloc] initWithNibName:@"crisismap" bundle:nil];
            break;
        case 3:
            viewController = [[firingrangemap alloc] initWithNibName:@"firingrangemap" bundle:nil];
            break;
        default:
            break;
    }
    [viewController setTitle:[NSString stringWithFormat:@"%i", indexPath.row 1]];
    [self.navigationController pushViewController:[viewController autorelease] animated:YES];
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Relinquish ownership any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload
{
    [super viewDidUnload];

    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
    // For example: self.myOutlet = nil;
}

- (void)dealloc
{
    [cellTextArray release];
    [imageArray release];
    [super dealloc];
}

@end
  

Ответ №1:

Вы пробовали добавить вызов logging, чтобы убедиться, что ViewController не равен nil? Сначала проверьте это, если оно равно нулю, вы знаете, что ваш переключатель неверен.