1

我正在尝试设置一个 UITableView 来显示文档目录中的数据。

我对代码有点迷茫,因为我尝试了很多来自谷歌和论坛等的例子。

我正在创建没有 Storyboard 的应用程序,所以它全部在代码中。

我已经显示了 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

您是否将断点放在 numberOfRowsInSection 方法中以检查该方法是否已被调用。正如我在您的代码中看到的那样,您没有初始化 _nsarray 并且没有在该数组中添加任何对象。所以基本上你的数组包含 0 个对象,所以不会创建任何行。在您的 numberOfRowsInSection 方法中,您已将 nslog 放在 return 语句之后,这将永远不会执行,请将其放在 return 语句之前,以便您可以实际看到数组值。我希望这能帮到您。

于 2012-09-29T10:58:12.560 回答
1

在和_nsarray中用作表视图数据源的数组永远不会在您的代码中初始化。你应该做类似的事情numberOfRowsInSectioncellForRowAtIndexPath

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

viewDidLoad.

于 2012-09-29T10:43:40.673 回答