0

我正在尝试调用reloadData我的UITableView. 我正在制作没有界面构建器的应用程序。

此代码适用于 Interface Builder,但似乎并非没有。

当我将我的代码与我以前在界面生成器中执行的操作进行比较时,我错过了将视图控制器拖到UITableView. 我有代表和数据源设置和工作。我的代码中是否缺少某些内容?

编辑: 这是在我的 viewDidLoad 中设置的 _tableView 具有属性集并且是合成的。

//Data is set into an NSArray then copied into an NSMutableArray
_nsarray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL];

_nsmArray = [[NSMutableArray alloc] init];
[_nsmArray addObjectsFromArray:_nsarray];

_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)];
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView];


-(void)refreshTable {
    //_tableView = [[UITableView alloc] initWithFrame:CGRectZero];
    [self.tableView reloadData];
}
4

4 回答 4

2

你是如何管理你的表数据的?NSArray?

您需要提供这些详细信息,因为您发布的内容应该可以工作:设置dataSourceanddelegate和调用reloadData。当您只是“ reloadData”时,您需要确保对数据源进行了更改。如果没有对数据源进行任何更改(即从数组中添加/删除对象),则不会发生任何事情。

于 2012-10-03T06:57:44.020 回答
1

您确定正确设置了委托和数据源吗?像这样:

    [tableView setDelegate:self];
    [tableView setDataSource:self];

然后你必须在主线程中调用方法“reloadData”,所以你应该像这样调用你的方法“refreshTable”:

    [self performSelectorOnMainThread:@selector(refreshTable) withObject:nil waitUntilDone:NO];
于 2012-10-03T07:00:52.273 回答
0

严格地说,您只需要两件事就可以在表格视图中显示数据:

1)self.tableView必须是指向table view,所以reloadData需要的时候可以调用。

2)表视图的dataSource属性必须分配给您的类,该类必须实现UITableViewDataSource协议中所需的方法。

于 2012-10-03T07:03:13.243 回答
0

只需确保在.h 文件中添加了 UITableViewDelegate 和 UITableViewDataSource 协议。

@interface YourClassName : UIViewController<UITableViewDelegate, UITableViewDataSource>

然后将您的 tableview 委托和 dataSource 设置为 self.

前任:

    [yourTableView setDelegate:self];
    [yourTableView setDataSource:self];
于 2012-10-03T07:09:45.677 回答