从NSMutableArray填充UITableView

时间:2014-10-22 19:36:26

标签: ios objective-c uitableview nsmutablearray

有一个问题,我的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;
}

2 个答案:

答案 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控制器中的表视图拖动到文件的所有者并设置委托,然后重复数据源