在UITableView中显示文档目录中的文件 - 最少iOS5

时间:2012-09-29 10:28:54

标签: ios uitableview directory document

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

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

我正在创建没有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;
        }

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

_nsarraynumberOfRowsInSection中用作表格视图数据源的数组cellForRowAtIndexPath永远不会在您的代码中初始化。你应该做点什么

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

答案 1 :(得分:1)

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