0

我创建了一个名为的自定义表格视图单元格SellerMobileTableViewCell,它将卖家的手机号码显示为标签,以及 SMS 和 Call 圆形矩形按钮:

卖家MobileTableViewCell

该单元没有自己的 XIB 文件——它是一个原型单元,UITableView其中自定义类设置为SellerMobileTableViewCell. 包含类型为 sSellerMobileTableViewCell的两个按钮。在界面生成器中,我也已经将按钮设置为它的自定义类。IBOutletContactButtonContactButton

#import <UIKit/UIKit.h>
#import "ContactButton.h"

@interface SellerMobileTableViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *numberLabel;
@property (weak, nonatomic) IBOutlet ContactButton *SMSButton;
@property (weak, nonatomic) IBOutlet ContactButton *callButton;

@end

这就是问题所在:当我没有SellerMobileTableViewCell.h通过 Ctrl-Click 连接它们并拖动到IBOutlets 时,应用程序中会出现两个自定义按钮。但是,当我这样做时,并且我应该这样做时,它们根本不会出现。

我不明白为什么会这样。帮助?

4

2 回答 2

0

UITableView您是否在 XIB 文件中设置了委托和数据源以及在头文件中设置了协议?

 @interface MerchantListController : UITableViewController <UITableViewDelegate, UITableViewDataSource>

在此处输入图像描述

您还设置了单元格标识符吗?

在此处输入图像描述

您还需要设置的委托方法UITableView

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

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

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

    NSString *cellIdentifier = @"MerchantListCell";
    MerchantListCell    *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];


    if (cell == nil)
    {
         cell = [[[MerchantListCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:CellIdentifier] autorelease];    
    }


    // initialize cell data here


    return cell;
}
于 2013-07-19T09:22:17.977 回答
0

我个人觉得这不算是一个“好的” StackOverflow 答案,但它现在可以工作,而且我没有做任何不同的事情。

首先,我尝试接受 Vin 的建议。即使我没有隐藏IBOutlet文件中的任何位置,我还是决定将其设置为NOinSellerMobileTableViewCell.m以确保安全:

#import "SellerMobileTableViewCell.h"

@implementation SellerMobileTableViewCell

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

// ...

@end

然后我还删除了以下自动创建的方法SellerMobileTableViewCell.m

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

但是,我再次删除该行self.SMSButton.hidden = NO并放回该setSelected:方法,它仍然有效。简而言之,我把所有东西都放回了原来的位置。我真的不明白这个错误。

这可能是一个 Xcode 错误吗?自从我添加了我设置为自定义按钮背景的自定义图像以来,我第一次遇到了奇怪的事情。我有CopyPNGFile Errors,如果你用 Google 搜索,它是最奇怪的 Xcode 错误之一,可以通过将 PNG 文件保存为非隔行扫描来解决。但是,我只是在问题导航器中丢失了该错误,而对图像本身也没有做任何事情——我只是删除并重新添加了文件。

于 2013-07-19T09:47:40.810 回答