-1

私がやろうとしているのは、フィールドにタスクを入力できるアプリです。挿入を押して、その下の表に表示してください。テーブル(*table)、フィールド(*taskField)、ボタン(*insert)、配列(*tasks)があります。アプリを実行し、何かを入力して挿入を押しますが、テーブルに何も表示されません。また、すべての「IB」のものが正しく設定されていると思います。

これが私のコードです:

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
4

1 に答える 1

2

IBチェックリスト:

テーブルビューを右クリックして、デリゲートとリファレンスアウトレットを確認します。

  1. datasourceあなたを指すViewController
  2. delegateあなたを指すViewController
  3. 参照アウトレットは正しく定義されており、ViewControllerヘッダーの変数の横には、アウトレットを示すために小さな黒いOが付いています。

datasourceおよびを設定するにdelegateは、CTRLボタンを押してViewControllerにドラッグします。

ViewControllerのViewControllerのヘッダーファイルにUITableViewDataSourceとUITableViewDelegateがあります。

@interface ViewController:UIViewController<UITableViewDataSource, UITableViewDelegate>

注:ViewControllerとは、あなたの場合はCookViewControllerを意味します。

編集:この機能を変更します:

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



--V

于 2012-06-18T03:44:35.780 に答える