Ios 在自定义UITableViewCell中链接为IBOutlet时,自定义UIButton将消失

Ios 在自定义UITableViewCell中链接为IBOutlet时,自定义UIButton将消失,ios,iphone,objective-c,ipad,Ios,Iphone,Objective C,Ipad,我创建了一个名为SellerMobileTableViewCell的自定义表格视图单元格,该单元格将卖家的手机号码显示为标签,并显示SMS和Call round rect按钮: 该单元格没有自己的XIB文件——它是UITableView中的原型单元格,自定义类设置为SellerMobilableViewCellSellerMobileTableViewCell包含两个按钮,即IBOutlets类型的ContactButton。在interface builder中,我已经将按钮设置为Conta

我创建了一个名为
SellerMobileTableViewCell
的自定义表格视图单元格,该单元格将卖家的手机号码显示为标签,并显示SMS和Call round rect按钮:

该单元格没有自己的XIB文件——它是
UITableView
中的原型单元格,自定义类设置为
SellerMobilableViewCell
SellerMobileTableViewCell
包含两个按钮,即
IBOutlet
s类型的
ContactButton
。在interface builder中,我已经将按钮设置为
ContactButton
,作为其自定义类

#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
#导入
#导入“ContactButton.h”
@接口SellerMobileTableViewCell:UITableViewCell
@属性(弱,非原子)IBUILabel*numberLabel;
@属性(弱、非原子)IBOutlet ContactButton*SMSButton;
@属性(弱,非原子)IBOutlet ContactButton*callButton;
@结束
问题是:当我没有通过Ctrl键单击并拖动到
IBOutlet
s将这两个自定义按钮连接到
SellerMobileTableViewCell.h
时,应用程序中会出现这两个自定义按钮。然而,当我这样做的时候,正如我应该做的那样,它们根本没有出现


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

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

 @interface MerchantListController : UITableViewController <UITableViewDelegate, UITableViewDataSource>

我个人觉得这算不上是一个“好”的答案,但它现在起作用了,我也没有做太多不同的事情

首先,我试着接受文的建议。即使我没有在文件中的任何地方隐藏
IBOutlet
,为了安全起见,我还是决定在
SellerMobileTableViewCell.m中将其设置为
NO

#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错误
s,如果你搜索一下,这是最奇怪的Xcode错误之一,可以通过将PNG文件保存为非交错文件来解决。然而,我只是在Issue Navigator中丢失了这个错误,没有对图像本身做任何处理——我只是删除并重新添加了文件。

您使用的是autoLayout吗?如果没有,请尝试。是的,我正在使用Autolayout。您好,持有表视图的视图控制器实际上是一个
UITableViewController
。这些都是自动设置的。好的,您是否设置了
UITableView
协议和所需的委托方法?您还设置了单元格标识符吗?当文件的所有者是
UITableViewController
时,我不必自己将其设置为代理和数据源(两个协议)。我还设置了单元格标识符。
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
}