1

ドキュメントディレクトリのデータを表示するUITableViewを設定しようとしています。

グーグルやフォーラムなどからの多くの例を試したので、私はコードに少し迷っています。

ストーリーボードなしでアプリを作成しているので、すべてコードで記述されています。

UITableViewが表示されたので、デリゲートとDataViewが設定されています。必要なのはコンテンツだけです。

このコードを表示しますが、データが表示されていません。

- (void)viewDidLoad
  {
    [super viewDidLoad];

    _firstViewWithOutNavBar = [[UIView alloc] init];
    _firstViewWithOutNavBar.frame = CGRectMake(self.view.frame.origin.x, 0, self.v  iew.frame.size.width, self.view.frame.size.height);
    _firstViewWithOutNavBar.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:_firstViewWithOutNavBar];

    UITableView *tableView = [[UITableView alloc] init];
    tableView.frame = CGRectMake(self.view.frame.origin.x, 0,     self.view.frame.size.width, self.view.frame.size.height);
    tableView.delegate = self;
    tableView.dataSource = self;
    [_firstViewWithOutNavBar addSubview:tableView];
  }

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
    //alloc and init view with custom init method that accepts NSString* argument
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:indexPath.row];
    NSString*pathToPass = [documentsDirectory stringByAppendingPathComponent:
                       [tableView cellForRowAtIndexPath:indexPath].textLabel.text]; //pass this.

    NSLog(@"%@", pathToPass);

//_nsarray = [[NSArray alloc] initWithContentsOfFile:pathToPass];


  }

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  {
      return [_nsarray count];
      NSLog(@"%@", _nsarray);
   }

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:   (NSIndexPath *)indexPath
   {
     static NSString *CellIdentifier = @"Cell";

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
      if (cell == nil) {
          cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }

      cell.textLabel.text = [NSString stringWithFormat:@"%@",[_nsarray  objectAtIndex:indexPath.row]];

      return cell;
        }

どんな助けでも素晴らしいでしょう。

4

2 に答える 2

1

およびで_nsarrayテーブルビューデータソースとして使用される配列は、コードで初期化されることはありません。あなたは次のようなことをする必要がありますnumberOfRowsInSectioncellForRowAtIndexPath

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
_nsarray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL];

viewDidLoad

于 2012-09-29T10:43:40.673 に答える
1

numberOfRowsInSectionメソッドにブレークポイントを配置して、このメソッドが呼び出されたかどうかを確認しましたか。コードでわかるように、_nsarrayを初期化しておらず、その配列にオブジェクトを追加していません。したがって、基本的に配列には0個のオブジェクトが含まれているため、行は作成されません。numberOfRowsInSectionメソッドでreturnステートメントの後にnslogを配置しましたが、これは実行されません。実際に配列値を確認できるように、returnステートメントの前に配置してください。これがお役に立てば幸いです。

于 2012-09-29T10:58:12.560 に答える