我已经从stackoverflow周围拼凑了几个片段,但我似乎无法像我期望的那样表现出来。
我正在尝试使用NSUSerDefaults并使用数据填充UITableView。
填充字典,并且所有NSLog的输出都是我期望的。但是最终cellForRowAtIndexPath
没有向表视图返回任何内容。
我有单元格标识符,重用设置为“单元格”但表格视图空白
- (void)viewDidLoad {
[super viewDidLoad];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
myDictionary = [defaults dictionaryRepresentation]; }
NSLog(@"Dict: %@",myDictionary);
NSLog(@"count: %d", [myDictionary count]);
NSArray * allKeys = [myDictionary allKeys];
NSLog(@"%@",allKeys);
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1; }
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [myDictionary count]; }
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSArray * allKeys = [myDictionary allKeys];
cell.textLabel.text = [myDictionary objectForKey:[allKeys objectAtIndex:indexPath.row]];
cell.detailTextLabel.text = [myDictionary objectForKey:[allKeys objectAtIndex:indexPath.row]];;
return cell; }
我的myTableViewController.m
文件的头部:
@interface myTableViewController ()
{
NSDictionary *myDictionary;
}
答案 0 :(得分:1)
你假设你的uitableviewcell在出列后不是零
如果您的字典不是问题,这应该可以解决您的问题:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
cell = *create your tableviewcell here*;
}
NSArray * allKeys = [myDictionary allKeys];
cell.textLabel.text = [myDictionary objectForKey:[allKeys objectAtIndex:indexPath.row]];
cell.detailTextLabel.text = [myDictionary objectForKey:[allKeys objectAtIndex:indexPath.row]];;
return cell; }
答案 1 :(得分:1)
评论摘要。
按如下方式更新您的.m(快速输入 - 下面可能的拼写错误):
@interface myTableViewController () <UITableViewDataSource, UITableViewDelegate>
{
NSDictionary *myDictionary;
NSArray *myKeys;
}
- (void)viewDidLoad {
[super viewDidLoad];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
myDictionary = [defaults dictionaryRepresentation];
myKeys = [defaults allKeys];
// not sure where your table view is created but set the dataSource and delegate
myTableView.dataSource = self;
myTableView.delegate = self;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return myKeys.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}
NSString *key = myKeys[indexPath.row];
cell.textLabel.text = myDictionary[key];
cell.detailTextLabel.text = myDictionary[key];
return cell;
}