2012-06-18 51 views
-1

我正在嘗試做的是一個應用程序,它可以讓你輸入一個任務到一個字段,按下插入並在下面的表格中看到它。我有我的表格(*table),我的字段(*taskField),我的按鈕(*insert)和我的陣列(*tasks)。我運行應用程序,鍵入內容並按下插入,但沒有顯示在表格中。我也相信我的所有「IB」的東西都設置正確。UITableView SDK添加陣列

這裏是我的代碼:

NSString *docPath() 
{ 
NSArray *pathList = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, 
                 YES); 
return [[pathList objectAtIndex:0] stringByAppendingPathComponent:@"data.td" ]; 
} 

#import "CookViewController.h" 

@interface CookViewController() 

@end 

@implementation CookViewController 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
} 

- (void)viewDidUnload 
{ 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
} 

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

- (IBAction)addRec:(id)sender 
{ 

NSString *t=[taskField text]; 

if ([t isEqualToString:@""]) { 
    return; 
} 

[tasks addObject:t]; 
[table reloadData]; 
[taskField setText:@""]; 
[taskField resignFirstResponder]; 
[tasks writeToFile:docPath() 
     atomically:YES]; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (editingStyle == UITableViewCellEditingStyleDelete) { 
    [tasks removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:[NSArray  arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } 

} 


#pragma mark - Table View management 

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

UITableViewCell *c= [table dequeueReusableCellWithIdentifier:@"Cell"]; 

if (!c) { 
    c= [[ UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]; 
} 

NSString *item = [tasks objectAtIndex:[indexPath row]]; 
[[c textLabel] setText:item]; 

return c; 

} 

@end 

回答

2

IB清單:

右鍵單擊表視圖,看到了代表和參考網點:

  1. datasource點使你ViewController
  2. delegate指向你的ViewController
  3. 參考插座已正確定義,並且ViewController標頭中的變量旁邊有一個小的變黑O以顯示插座。

要設置datasourcedelegate,請按下CTRL按鈕並將其拖到您的ViewController。

您的視圖控制器具有UITableViewDataSource和的UITableViewDelegate在ViewController中的頭文件:

@interface ViewController:UIViewController<UITableViewDataSource, UITableViewDelegate>

注意:通過視圖控制器我的意思是CookViewController你的情況。

編輯:更改此功能:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    table.delegate = self; 
    table.dataSource = self; 
} 



--V

+0

我的數據源和委託沒有指向任何東西,只要我可以告訴(鄰的是空的) 。我的參考出口指向addRec並且有一個黑色的o。我沒有在我的文件中看到任何像UITableViewDataSource。我需要改變一些東西嗎?我的數據源/代表應該指向什麼?我可以給你更多的信息嗎?謝謝! – user1438042

+0

我已經用你需要做的兩件事更新了我的答案,基本上將它們設置爲指向StoryBoard中的ViewController並更改頭文件。另外,你可以在'cellForRowAtIndexPath'函數中使用NSLog來知道它實際上是否被調用。 – vellvisher

+0

你是什麼意思把他們拖到ViewController?在我的.h/.m文件中有一個?我不知道我需要拖到哪裏。「@interface ViewController:UIViewController 」不顯示在我的文件中的任何位置。什麼是StoryBoard?感謝您的幫助,對不起,如果我很難,我很新。 – user1438042