如果TableView Cell中的语句不起作用

时间:2014-02-20 13:20:02

标签: ios uitableview

我正在从plist(复制到文档)调用数据,该数据具有0或1值,具体取决于我是否要选择或不选择复选框。 cell.m文件中的代码如下所示,但我似乎无法改变是否选中了复选框。

主视图代码:

#import "ffguideViewController.h"
#import "booksCell.h"


@interface ffguideViewController ()

@end

@implementation ffguideViewController

{
    NSArray *title;
    NSArray *thumbnails;
    NSArray *price;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Find out the path of books_star.plist

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory =  [paths objectAtIndex:0];
    NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"books_star.plist"];

    // Load the file content and read the data into arrays
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
    title = [dict objectForKey:@"title"];
    thumbnails = [dict objectForKey:@"thumbnail"];
    price = [dict objectForKey:@"price"];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [title count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *books_starTableIdentifier = @"booksCell";

    booksCell *cell = (booksCell *)[tableView dequeueReusableCellWithIdentifier:books_starTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"booksCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    cell.titleLabel.text = [title objectAtIndex:indexPath.row];
    cell.thumbnailImageView.image = [UIImage imageNamed:[thumbnails objectAtIndex:indexPath.row]];
    cell.priceLabel.text = [price objectAtIndex:indexPath.row];

    return cell;
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 104;
}

@end

单元格代码:

#import "booksCell.h"

@implementation booksCell

@synthesize titleLabel = _titleLabel;
@synthesize priceLabel = _priceLabel;
@synthesize thumbnailImageView = _thumbnailImageView;


- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {}
return self;}


- (void) awakeFromNib {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory =  [paths objectAtIndex:0];
    NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"books_star.plist"];

    // Load the file content and read the data into arrays
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

    NSString *checked = [dict objectForKey:@"check"];

    NSLog(@"%@", [[dict objectForKey:@"check"] class]);

    NSLog(@"Checked %@", checked);

    int checkedINT = [checked intValue];

     NSLog(@"CheckedInt %d", checkedINT);

    if (checkedINT == 1){
        checkedImage.image = [UIImage imageNamed:@"check_on.png"];
    } else {
        checkedImage.image = [UIImage imageNamed:@"check_off.png"];}}


- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}


@end

plist中:

    <key>title</key>
    <array>
        <string>Book 1</string>
        <string>Book 2</string>
        <string>Book 3</string>
        <string>Book 4</string>
        <string>Book 5</string>
        <string>Book 6</string>
    </array>
    <key>thumbnail</key>
    <array>
        <string>test.jpg</string>
        <string>test.jpg</string>
        <string>test.jpg</string>
        <string>testjpg</string>
        <string>test.jpg</string>
        <string>test.jpg</string>
        <string>test.jpg</string>
    </array>
    <key>price</key>
    <array>
        <string>£1.00</string>
        <string>£2.00</string>
        <string>£3.00</string>
        <string>£4.00</string>
        <string>£5.00</string>
        <string>£6.00</string>
        <string>£7.00</string>
    </array>
    <key>check</key>
    <array>
        <string>1</string>
        <string>0</string>
        <string>0</string>
        <string>1</string>
        <string>0</string>
        <string>1</string>
        <string>0</string>
    </array>
</dict>
</plist>

1 个答案:

答案 0 :(得分:2)

移动

 return self;

到代码运行之前的函数结束。

将来使用断点来查看代码是否已执行。

关于我们讨论中提出的第二部分问题:

您正在从XIB(loadNibNamed)创建UITableViewCell。在这种情况下,不使用initWithStyle:而不是在以下方面实现您的自定义逻辑:

- (void) awakeFromNib