cellForRowAtIndexPath 中的标题和 NSLog 不是 运行

Titles and NSLog not running in cellForRowAtIndexPath

我似乎不明白为什么我的单元格无法显示标题和副标题。我已经尝试通过 NSLog() 获取字符串 objects,但是除了成功打印测试 object 的内存位置的 NSLog() 之外,我没有收到任何输出(aStackobject)数组中,array_Stacks.

这是我的 cellForRowAtIndexPath: 方法:

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleCell" forIndexPath:indexPath];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SimpleCell"];
    }

    NSString *cell_Title = [[array_Stacks objectAtIndex:[indexPath row]] title];
    NSString *cell_Subtitle = [[array_Stacks objectAtIndex:[indexPath row]] subject];

    NSLog(@"%@", cell_Title);

    NSLog(@"%@", [array_Stacks objectAtIndex:[indexPath row]]);
    NSLog(@"%@", cell_Subtitle);

    cell.textLabel.text = cell_Title;
    cell.textLabel.tintColor = [cp color_master_tan];
    cell.detailTextLabel.text = cell_Subtitle;
    cell.detailTextLabel.tintColor = [cp color_master_tan];
    //cell.imageView.image = [UIImage imageNamed:@"asset_Cell"];

    return cell;
}

注意:"cp" 是我的调色板 object 并且正在返回 UIColor object。

这里是Stack.m

#import "Stack.h"
#import "FlashCard.h"

/*
 Notes

 * Need to get the name of the creator and add it to the default init.

 */

@implementation Stack
{
    NSMutableArray *array_flashCard;
}
@synthesize title, subject, creator, array_FlashCard;

#pragma mark - Initializers

- (id)init {
    return [self initWithTitle:@"New Stack" subject:@"No Subject" creator:@"None Listed" array:array_FlashCard];
}

- (id)initWithTitle:(NSString *) ttl subject:(NSString *) sbj creator:(NSString *) ctr array:(NSMutableArray *) arr {
    self = [super init];
    if (self) {
        title = ttl;
        subject = sbj;
        creator = ctr;
        array_FlashCard = arr;

        title = [[NSString alloc] init];
        subject = [[NSString alloc] init];
        creator = [[NSString alloc] init];
        array_FlashCard = [[NSMutableArray alloc] init];

    }
    return self;
}

#pragma mark - Array Operations

- (void)addFlashCardToArray:(FlashCard *) flashcard { [array_FlashCard addObject:flashcard]; }

@end

您正在 Stack initWithTitle:... 中将字符串设置为 @""

    title = ttl;
    subject = sbj;
    creator = ctr;
    array_FlashCard = arr;

    title = [[NSString alloc] init]; // Throw away previous value; assign new empty string.
    subject = [[NSString alloc] init]; // Throw away previous value; assign new empty string.
    creator = [[NSString alloc] init]; // Throw away previous value; assign new empty string.
    array_FlashCard = [[NSMutableArray alloc] init]; // Throw away previous value; assign new empty array.

你必须明白,在大多数情况下,这只是一个小错误。因此,您必须检查以下内容。

  1. 代理和数据源是否设置正确。并设置委托方法是否被正确调用的断点。
  2. 数据源是否不返回零对象。因为如果数据源不包含任何对象,cellForRowAtIndexPath 将不会被调用。

希望这对您有所帮助,请相信我,这不是什么严重的事情。您可能只是错过了一些东西。

奇怪的是你已经分配了 titlesubjectcreatorarray_FlashCard。但是你再次初始化它,它们就不再是空的了。