Xcode:在表中显示数据

时间:2013-01-03 01:36:25

标签: ios tableview

您好我对编程场景相对较新,并且一直在使用lynda.com来学习小项目的技能和实践。我按照教师指导的信,但我们的结果是完全不同的。我希望我的NSMutable数组中我的课程的“名称”字符串显示为我表格中单元格的标题,但是当我加载应用程序时,没有任何内容出现。请帮助一个无能的孩子!

这是我的类的代码,实现文件只包含我的属性的合成

#import "Class.h"

@implementation Course

@synthesize name,teacher,room;

@end

这是我的UITable视图控制器类的代码

#import "ScheduleTableViewController.h"

@interface ScheduleTableViewController ()

@end

@implementation ScheduleTableViewController

NSMutableArray *classes;



- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{


NSMutableArray *classes = [[NSMutableArray alloc]init];

Course *class = [[Course alloc]init];
[class setName:@"AP Psychology"];
[class setRoom:@"E203"];
[class setTeacher:@"Juiliette Forbes"];
[classes addObject:class];

[class setName:@"AP Literature"];
[class setTeacher:@"Kristen Holtz"];
[class setRoom:@"E207"];
[classes addObject:class];

[class setName:@"AP Physics"];
[class setTeacher:@"Peter Dalby"];
[class setRoom:@"D205"];
[classes addObject:class];

[super viewDidLoad];


}

- (void)viewDidUnload
{
[super viewDidUnload];

}

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

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{


return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

return [classes count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath
{
static NSString *CellIdentifier = @"ClassCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault
                                   reuseIdentifier:CellIdentifier];
             }
Course *current = [classes objectAtIndex:indexPath.row];
[cell.textLabel setText:[current name]];

return cell;
}

任何帮助都将得到很好的赞赏,希望我能跟上任何一个行话

1 个答案:

答案 0 :(得分:0)

检查以确保您已正确设置表格单元格的标识符。

要执行此操作,请打开故事板编辑器并转到表格视图。单击原型单元格并打开“实用程序”窗格。检查“Identifier”是否为“ClassCell”。

接下来,确保您的ViewController是一个UITableViewController并实现UITableViewDelegate协议。目前尚不清楚你是否已经这样做了。

您的ScheduleTableViewController.h应该类似于:

#import <UIKit/UIKit.h>

@interface ScheduleTableViewController : UITableViewController <UITableViewDelegate>
// code
@end

另外,我在这里注意到了这一点:

NSMutableArray *classes = [[NSMutableArray alloc]init];

Course *class = [[Course alloc]init];
[class setName:@"AP Psychology"];
[class setRoom:@"E203"];
[class setTeacher:@"Juiliette Forbes"];
[classes addObject:class];

[class setName:@"AP Literature"];
[class setTeacher:@"Kristen Holtz"];
[class setRoom:@"E207"];
[classes addObject:class];

[class setName:@"AP Physics"];
[class setTeacher:@"Peter Dalby"];
[class setRoom:@"D205"];
[classes addObject:class];

由于* class是指向课程对象的指针,因此您实际上只创建了一个,然后继续编辑其属性并将其重新添加到数组中。像这样创建多个类对象:

Course *class1 = [[Course alloc] init];
// set properties
Course *class2 = [[Course alloc] init];
// set properties
Course *class3 = [[Course alloc] init];
// set properties
[classes addObjects:class1, class2, class3, nil];