我正在尝试设置一个显示文档目录中数据的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;
}
任何帮助都会很棒。
答案 0 :(得分:1)
在_nsarray
和numberOfRowsInSection
中用作表格视图数据源的数组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语句之前,以便您可以实际查看数组值。 我希望这能帮到您。