有一个问题,我的tableview单元格中没有显示数组值,但可以使用NSLog正确打印出来。在此先感谢您的帮助!
TableViewCell .h
#import <UIKit/UIKit.h>
@interface TableViewCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UIImageView *image;
@property (strong, nonatomic) IBOutlet UILabel *label;
@end
TableViewController.h
#import <UIKit/UIKit.h>
@interface TableViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
@property(nonatomic, strong) NSMutableArray *imagesArray;
@property(nonatomic, strong) NSMutableArray *namesArray;
@end
TableViewController.m
#import "TableViewController.h"
#import "TableViewCell.h"
@interface TableViewController ()
@end
@implementation TableViewController
@synthesize primaryWeaponNames = _primaryWeaponNames;
- (void)viewDidLoad {
[super viewDidLoad];
[self setupArrays];
}
- (void)setupArrays {
_namesArray = [[NSMutableArray alloc] initWithObjects:
@"NAME1", @"NAME2", @"NAME3"
nil];
self.imagesArray = [[NSMutableArray alloc] initWithObjects:
@"IMG1", @"IMG2", @"IMG3"
nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return _namesArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"TableViewCell";
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
cell.nameLabel.text = [NSString stringWithFormat:@"%@", [_namesArray objectAtIndex:indexPath.row]];
NSLog(@"%@", _namesArray[indexPath.row]);
cell.image.image = [self.imagesArray objectAtIndex:indexPath.row];
[cell setAccessoryType: UITableViewCellAccessoryDisclosureIndicator];
return cell;
}
答案 0 :(得分:0)
在xib文件中创建单元格时,应在viewDidLoad中注册nib。由于您没有这样做,dequeue方法将返回nil,并且您只是创建一个默认单元格(在if(cell == nil)子句中)而不是您的自定义单元格。默认单元格没有nameLabel或image属性,因此设置这些出口值的行不会执行任何操作。
[self.tableView registerNib:[UINib nibWithNibName:@"Your nib name here" bundle:nil] forCellReuseIdentifier:@"TableViewCell];
答案 1 :(得分:-2)
在TableViewController
课程中,您需要加入
self.tableView.delegate = self;
self.tableView.datasource = self;
在您的viewDidLoad
方法中。或者您可以在界面构建器中执行此操作,方法是右键单击将tableview控制器中的表视图拖动到文件的所有者并设置委托,然后重复数据源