4

基本上我有一个自定义 UITableViewCell 我在我的 nib 文件中制作。其中我有一些标签和诸如此类的东西,我希望能够以编程方式进行编辑。我将我的 nib 文件命名为“post”,并将其文件所有者设为“post”,并将其类设置为文件所有者下的“post”。我将笔尖中的所有标签都链接到这个类:

post.h:

#import <Foundation/Foundation.h>

@interface post : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *title;
@property (nonatomic, weak) IBOutlet UILabel *authorComments;
@property (nonatomic, weak) IBOutlet UILabel *time;

@end

邮递员:

#import "post.h"

@implementation post

    @synthesize title = _title;
    @synthesize authorComments = _authorComments;
    @synthesize time = _time;

@end

我的 nib 文件的图像:

在此处输入图像描述

所以现在我的 nib 文件中的所有内容都与我的帖子类链接,除了实际的单元格本身,因为我被告知我必须将它与“视图”链接,但我不确定如何(我尝试将它链接到 backgroundView 但这确实不能解决我的问题)。我也尝试过为实际的单元格对象提供类帖子,但它不能解决我的问题。

然后在我的控制器中,我有以下代码:

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

    // this is the identifier that I gave the table cell within my nib
    static NSString *simpleTableIdentifier = @"post";

    // grabs me a cell to use
    post *cell = (post *) [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil) {
        cell = [[post alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    // sets the text on one of the labels within my cell to something else
    cell.title.text = @"this is a test";

    // returns my customized cell
    return cell;

}

但是,当我运行我的应用程序时,我得到了这个:

在此处输入图像描述

我知道我遇到的问题与我的自定义单元格有关,因为我之前有它工作过,当我将笔尖上的文件所有者设置到我的控制器时,而不是尝试我现在​​正在做的事情创建 UITableViewCell 的子类。我要做的就是能够创建一个带有多个不同标签的自定义单元格,然后能够以编程方式编辑单元格上的文本。

如果有帮助,这里是我所有的源文件和我的 nib 文件:

https://dl.dropboxusercontent.com/u/7822837/source.zip

4

3 回答 3

10

您必须在您的 UITableView 中注册 Nib:forCellReuseIdentifier:,如下所示:

- (void)viewDidLoad {
   [super viewDidLoad];
    [self.tableView registerNib:[UINib nibWithNibName:@"post" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"post"];
}

迅速:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.registerNib(UINib(nibName: "post", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: "post")
}
于 2013-04-26T05:12:10.400 回答
5

你必须做两件事

在 xib 文件中

断开文件所有者的所有出口并将出口连接到您的自定义单元对象

在此处输入图像描述

在代码中

从笔尖加载单元格

if (cell == nil) {

    //cell = [[post alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    cell = [[[NSBundle mainBundle]loadNibNamed:@"post" owner:self options:nil]objectAtIndex:0];
}
于 2013-04-26T04:59:59.070 回答
0

Give the referencing Outlet to your ViewController, You didn't given a referencing outlet to your ViewController.

于 2013-04-26T04:50:41.783 回答