cellForRowAtIndexPath 中的标题和 NSLog 不是 运行
Titles and NSLog not running in cellForRowAtIndexPath
我似乎不明白为什么我的单元格无法显示标题和副标题。我已经尝试通过 NSLog()
获取字符串 objects,但是除了成功打印测试 object 的内存位置的 NSLog()
之外,我没有收到任何输出(aStack
object)数组中,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.
你必须明白,在大多数情况下,这只是一个小错误。因此,您必须检查以下内容。
- 代理和数据源是否设置正确。并设置委托方法是否被正确调用的断点。
- 数据源是否不返回零对象。因为如果数据源不包含任何对象,
cellForRowAtIndexPath
将不会被调用。
希望这对您有所帮助,请相信我,这不是什么严重的事情。您可能只是错过了一些东西。
奇怪的是你已经分配了 title
、subject
、creator
和 array_FlashCard
。但是你再次初始化它,它们就不再是空的了。
我似乎不明白为什么我的单元格无法显示标题和副标题。我已经尝试通过 NSLog()
获取字符串 objects,但是除了成功打印测试 object 的内存位置的 NSLog()
之外,我没有收到任何输出(aStack
object)数组中,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.
你必须明白,在大多数情况下,这只是一个小错误。因此,您必须检查以下内容。
- 代理和数据源是否设置正确。并设置委托方法是否被正确调用的断点。
- 数据源是否不返回零对象。因为如果数据源不包含任何对象,
cellForRowAtIndexPath
将不会被调用。
希望这对您有所帮助,请相信我,这不是什么严重的事情。您可能只是错过了一些东西。
奇怪的是你已经分配了 title
、subject
、creator
和 array_FlashCard
。但是你再次初始化它,它们就不再是空的了。