将数据传递给UITableViewCell iOS

时间:2014-04-16 08:18:09

标签: ios objective-c uitableview

我目前有一个带有自定义单元格的tableView,我称之为AMPFeedbackTableViewCell。细胞加载完全很好。

以下是代码:

-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"feedbackCell"];

    AMPFeedbackTableViewCell* cell = (AMPFeedbackTableViewCell*) [tableView dequeueReusableCellWithIdentifier:@"feedbackCell"];
    if (cell == nil)
    {
        cell = [[AMPFeedbackTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"feedbackCell"];
        cell.currentFeedback = [[AMPFeedback alloc] init];
        cell.currentFeedback = [_feedbackArray objectAtIndex:indexPath.row];
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"FeedbackTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

我试图在它开始之前将某些东西传递给单元格,就像在这种情况下它是_currentFeedback。自定义单元格有一个AMPFeedback项目,我希望它在加载之前设置它。所以我可以像这样使用它:(注意:这是在AMPFeedbackTableViewCell

- (void)awakeFromNib
{
    // Initialization code
    if (_currentFeedback != nil)
        [self loadImages];
}

然而,_currentFeedback总是为零。有没有办法可以通过它然后调用awakeFromNib?

提前致谢

2 个答案:

答案 0 :(得分:2)

如果你不坚持在awakefromNib中这样做,还有另一种方式(也许更好)这样做:

在AMPFeedbackTableViewCell.h中

@property (strong) AMPFeedBack *currentFeedback;

在AMPFeedbackTableViewCell.m

@synthesize currentFeedback = _currentFeedback;

- (void)setCurrentFeedback:(AMPFeedback *)feedback {
    if (feedback==nil) return;

    _currentFeedback = feedback;
    [self loadImages];
}

然后我们可以直接在主代码中触发它:

-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    AMPFeedbackTableViewCell* cell = (AMPFeedbackTableViewCell*) [tableView dequeueReusableCellWithIdentifier:@"feedbackCell"];
    if (cell == nil) {
        cell = [[AMPFeedbackTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"feedbackCell"];
    }

    cell.currentFeedback = [_feedbackArray objectAtIndex:indexPath.row];

希望它有所帮助。

答案 1 :(得分:0)

    You can do initialization and loading of data in the following method of custom uitableview cell
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
   self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
   if (self) {
       // Initialization code
      }
      return self;
  }

 and you can load customcell in your tableview
 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
       static NSString *eventListCell   = @"EventListCell";
       EventListCell *cell = (EventListCell *)[tableView dequeueReusableCellWithIdentifier:eventListCell];

         if (cell == nil)
        {
               cell = (EventListCell*)[[[NSBundle mainBundle] loadNibNamed:@"EventListCell" owner:self options:nil] objectAtIndex:0];
     // here you can access the custom class public variable to set data .
        }

}