iOS:为啥在自定义 TableViewCell 中写入此文本字段的文本似乎不可读

Posted

技术标签:

【中文标题】iOS:为啥在自定义 TableViewCell 中写入此文本字段的文本似乎不可读【英文标题】:iOS: Why is the text written into this textfield within a custom TableViewCell not appearing to be readableiOS:为什么在自定义 TableViewCell 中写入此文本字段的文本似乎不可读 【发布时间】:2014-12-10 02:14:52 【问题描述】:

所以我有一个表视图,它位于视图控制器内的视图中。

然后我希望表格视图的单元格在左侧有一个文本标签,在右侧有一个文本字段,以便用户可以在此文本字段中输入数据。

我创建了一个自定义类tableviewcell,如下所示:

#import <UIKit/UIKit.h>

@interface TableViewCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UITextField *textField;


@end

this 是 tableview 以及单元格所在的视图的控制器;

头文件:

#import <UIKit/UIKit.h>

@interface SignUpViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) IBOutlet UITableView *Table;

@property (strong, nonatomic) NSMutableArray *SignUpTableNames;

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

- (NSInteger)tableView:(UITableView *)tableView
 numberOfRowsInSection:(NSInteger)section;





@end

以及将我自己的单元格类型添加到此视图/表格的两种方法:

- (TableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdent =@"Cell";
    TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdent forIndexPath:indexPath];
    //cell.textLabel.text =@"t";
    //NSString *s = [self.SignUpTableNames objectAtIndex:indexPath.row];
    cell.textLabel.text = (NSString *)[self.SignUpTableNames objectAtIndex:indexPath.row];
    cell.textField.placeholder = @"h";
    cell.textField.textColor = [UIColor greenColor];
    if (indexPath.row ==4)
    
        cell.textField.secureTextEntry = YES;
    

    return cell;


-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    return 5;


cell.textLabel.text 从 SignUpTableName NSMutableArray 更新得非常好,但 cell.textField 实例似乎是个问题。文本字段不可见,我不确定它是否存在。如果我点击文本字段应该在的位置,我会得到一个键盘并可以尝试在该字段中输入一些数据,但是,我实际上并没有在屏幕上看到文本。

这是怎么回事,为什么我在自定义单元格内的文本字段中看不到文本?

非常感谢,最好的问候,

克里斯

为了澄清,我还在 xcode 的图形用户界面中将单元格标识符设置为“单元格”,并在 tableview 和视图的视图控制器之间设置委托和数据源连接,也通过xcode 的图形用户界面。

【问题讨论】:

你检查文本字段连接了吗?? 您的意思是文本字段是否作为 IBOutlet 连接到单元格?是的,请参阅我原帖中的第一部分代码 更正:如果单元格被选中,文本字段是可见的。如果未选择单元格,则文本字段及其中的文本将不可见... 【参考方案1】:

在 TableViewCell.m 中添加此函数并确保 NSLog 正在打印,如果没有将此函数中的内容复制到您使用的任何初始化函数中

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)


    _textField=[[UITextField alloc]initWithFrame:CGRectMake(70, 0, 150, 40)];
    [self addSubview:_textField];
    NSLog(@"init with style should be called");//this should be printed in log


return self;

【讨论】:

以上是关于iOS:为啥在自定义 TableViewCell 中写入此文本字段的文本似乎不可读的主要内容,如果未能解决你的问题,请参考以下文章

TapGestures 在自定义 TableViewCell 中不起作用

在自定义 TableViewCell 中动态更改 UILabel 框架

如何在自定义 tableViewCell 中初始化 UiPickerView?

无法在自定义 TableViewCell 中编辑 UITextView

在自定义 tableviewcell 中更改 UIImage

我在自定义 TableViewCell 中有一个 UICollectionView,但我无法自动调整 CollectionView 的大小