单元配置方法

时间:2011-12-18 03:38:59

标签: xcode

在数组中配置表格单元时遇到一些问题。已注释掉LLVM编译器返回的错误。

实施档案:

#import "BIDFirstLevelController.h"
#import "BIDSecondLevelViewController.h"

@implementation BIDFirstLevelController

@synthesize controllers;

- (void) viewDidLoad
{
    [super viewDidLoad];
    self.title = @"First Level";
    NSMutableArray *array = [[NSMutableArray alloc]init];
    self.controllers = array;
}

- (void) viewDidUnload
{
    [super viewDidUnload];
    self.controllers = nil;
}

#pragma mark -
#pragma mark Table Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.controllers count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *FirstLevelCell = @"FirstLevelCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:FirstLevelCell];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstLevelCell];
    }
}


// Configure the cell
NSUInteger row = [indexPath row]; // replace with NSUIndexPath
BIDSecondLevelViewController *controller = [controllers objectAtIndex:row]; //replace controllers with controller
cell.textLabel.text = controller.title; // unknown type name 'cell', Expected identifier or '('
cell.imageView.image = controller.rowImage; // Expected identifier or '(
cell.accessoryType = UITableViewAccessoryDisclosureIndicator; // Unknown type name 'cell'
return cell;
    }

#pragma mark -
#pragma mark Table View Delegate Methods
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{NSUInteger row = [indexPath row];
    BIDSecondLevelViewController *nextController = [self.controllers objectAtIndex:row];
    [self.navigationController pushViewController:nextController animated:YES];


@end

接口文件:

#import <UIKit/UIKit.h>

@interface BIDFirstLevelController : UITableViewController

@property (strong, nonatomic) NSArray *controllers;

@end // Unexpected '@' in program

1 个答案:

答案 0 :(得分:0)

您需要在tableView:cellForRowAtIndexPath:的if语句后删除大括号:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *FirstLevelCell = @"FirstLevelCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:FirstLevelCell];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstLevelCell];
    }
     // DELETE THE } THAT IS HERE
    // Configure the cell
    NSUInteger row = [indexPath row];  
    BIDSecondLevelViewController *controller = [controllers objectAtIndex:row];
    cell.textLabel.text = controller.title;
    cell.imageView.image = controller.rowImage;
    cell.accessoryType = UITableViewAccessoryDisclosureIndicator;
    return cell;
}

您还需要添加花括号来关闭最终功能:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSUInteger row = [indexPath row];
    BIDSecondLevelViewController *nextController = [self.controllers objectAtIndex:row];
    [self.navigationController pushViewController:nextController animated:YES];
} // This curly brace is missing
@end