2013-01-03 86 views
1

你好我對編程場景比較陌生,一直在使用lynda.com學習小項目的技巧和實踐。我遵循了教練的指導,但結果卻完全不同。我希望我的NSMutable數組中的「name」字符串顯示爲表格中單元格的標題,但是當我加載應用程序時什麼也沒有出現。請幫助無知的孩子!Xcode:在表格中顯示數據

這裏是我的類的代碼,實現文件只包括我的性

#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

這部分代碼看起來不正確。 '#import「Class.h」 @implementation Course @synthesize name,teacher,room; @ end'導入Class.h並執行課程?此外,除了委託之外,您還需要設置表視圖的**數據源**。 – esh

+1

請從viewdidLoad()中刪除重新聲明數據源數組類,您的代碼將完美工作。 – Vinodh

+0

該文件被稱爲class.h,但我不得不從class中更改類的名稱,因爲它與某些基礎代碼衝突,所以我將其更改爲「course」。至於數據源的重新聲明,恐怕我實際上並不知道那是什麼可能爲我強調這一點?對不起,因爲我說我有點新 – Hammy

回答

0

檢查以確保您已正確設置標籤的標識符le cell。

要做到這一點,打開你的故事板編輯器,並轉到你的表視圖。點擊原型單元並打開實用程序窗格。檢查「標識符」是「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]; 

由於*類是一個指向課程對象,你實際上只創建一個,然後你不斷編輯它的屬性並重新添加到數組中。創建多個類對象,如下所示:

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]; 
+0

我的重用標識符是好的,我的代表協議也是如此。我認爲它與我的數組有關的更少,更多的與我的表有關,因爲當我嘗試添加非數組的文本時,仍然沒有出現任何內容。感謝您對類指針的建議。我認爲同樣的事情,但視頻中的人能夠用一遍又一遍地重複使用單個指針來做到這一點。 – Hammy

+0

當Vinodh說他不重新聲明你的數據源數組時,你提到了兩次: NSMutableArray * classes; 你只需要聲明一次。因此,更改以下行: NSMutableArray * classes = [[NSMutableArray alloc] init]; 至: classes = [[NSMutableArray alloc] init]; (編輯:這意味着你的數組沒有填充任何東西,因爲它沒有被初始化,而是你已經初始化另一個變量,稱爲同一件事。) –