我在IB中创建了一个自定义UITableViewCell,将它链接到根视图控制器的属性,然后在CellForRowAtIndexPath中进行设置.但我绘制的细胞的高度与我在IB中建立的高度不一样,建议?这是一些截图和代码.


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *AddressCellIdentifier = @"AddressCellIdent";
UITableViewCell *thisCell = [tableView dequeueReusableCellWithIdentifier:AddressCellIdentifier];
if (thisCell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"AddressCell" owner:self options:nil];
thisCell = addressCell;
self.addressCell = nil;
}
return thisCell ;
}
Run Code Online (Sandbox Code Playgroud)
addressCell是@property(非原子,赋值)IBOutlet UITableViewCell*addressCell;,并在IB中链接到文件的所有者(表视图控制器).
我正在使用Apple的表格视图编程指南中的示例.
我有一个自定义的UITableView单元格,我已经添加了一个文本框进行编辑,根据编辑模式显示和隐藏.我还尝试添加一条显示编辑时的垂直线,并且它会这样做,但我遇到了一些绘图问题.我刚刚添加了绿色复选标记rightView以开始处理输入验证反馈,我看到了类似的问题.
这是单元格的代码,也是我的cellForRowAtIndexPath的一部分.
#import <UIKit/UIKit.h>
@interface EditableCellStyle2 : UITableViewCell {
CGRect editRect;
UITextField *editField;
UIView *lineView;
}
@property (nonatomic, readonly, retain) UITextField *editField;
@property (nonatomic, readonly, retain) UIView *lineView;
@end
Run Code Online (Sandbox Code Playgroud)
#import "EditableCellStyle2.h"
@implementation EditableCellStyle2
@synthesize editField;
@synthesize lineView;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code.
editRect = CGRectMake(83, 12, self.contentView.bounds.size.width-83, 19);
editField = [[UITextField alloc] initWithFrame:editRect];
editField.font = [UIFont boldSystemFontOfSize:15];
editField.textAlignment = UITextAlignmentLeft;
editField.textColor = [UIColor blackColor];
editField.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight; …Run Code Online (Sandbox Code Playgroud) 我现在一直在敲打这一天一两天,并且不能按照我想要的方式让它工作.我正在尝试模仿地址簿的联系人编辑页面(我知道以前曾经问过).
我有一个自定义UITableViewCell,它包含一个UITextField,它位于与详细文本标签相同的位置,当按下编辑按钮时,它们隐藏和取消隐藏以显示正确的项目.
我正在使用UITextFieldDelegate将文本字段中输入的信息存储到字典中,这样我就可以在用户单击"完成"时将它们保存到视图数组和核心数据模型中.
现在的问题是:如果文本输入到字段中,没有选择其他字段/单元格,并且按下完成,则更改的信息将被忽略,它永远不会存储在字典中.
我的代码现在只在按下完成时将字典的内容打印到NSLog,因为我没有看到更新单元格的点,直到字典的状态首先正确.
我列出了所有带有日志打印的UITextFieldDelegate方法,当每个东西运行时试图跟踪事物的流动情况,但它并没有帮助我解决这个特定的问题.
这是代码:
EditableCellStyle2.h
@interface EditableCellStyle2 : UITableViewCell {
CGRect editRect;
UITextField *editField;
}
@property (nonatomic, readonly, retain) UITextField *editField;
@end
Run Code Online (Sandbox Code Playgroud)
EditibleCellStyle2.m
#import "EditableCellStyle2.h"
@implementation EditableCellStyle2
@synthesize editField;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code.
editRect = CGRectMake(83, 12, self.contentView.bounds.size.width-83, 19);
editField = [[UITextField alloc] initWithFrame:editRect];
editField.font = [UIFont boldSystemFontOfSize:15];
editField.textAlignment = UITextAlignmentLeft;
editField.textColor = [UIColor blackColor];
editField.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
[self.contentView addSubview:editField];
self.editField.enabled = NO; …Run Code Online (Sandbox Code Playgroud) 我有一个核心数据对象,有一堆可选值.我正在推送一个表视图控制器并向它传递一个对象的引用,以便我可以在表视图中显示它的内容.因为我希望以特定方式显示表视图,所以我将核心数据对象中的值存储到字典数组中,然后使用该数组填充表视图.这很好用,我编辑和保存工作正常.(我没有使用获取的结果控制器,因为我没有任何可以排序的东西)
我当前代码的问题是,如果对象中的一个项目丢失,那么我最终会尝试将nil放入字典中,这将无效.
我正在寻找一种干净的方法来处理这个问题,我可以做到以下几点,但我不禁感到有更好的方法.
*passedEntry是在推送时传递给视图控制器的核心数据对象,假设它包含firstName,lastName和age,都是可选的.
if ([passedEntry firstName] != nil) {
[dictionary setObject:[passedEntry firstName] forKey:@"firstName"]
}
else {
[dictionary setObject:@"" forKey:@"firstName"]
}
Run Code Online (Sandbox Code Playgroud)
等等.这有效,但感觉很糟糕,特别是如果我最终在核心数据对象中添加更多项目.
我试图模仿联系人应用程序中可编辑表格单元格的行为.我已经将UITableViewCell子类化,添加了我自己的UITextField,并设置了行为,如果按下编辑,标签将被隐藏,我的文本字段将被启用,并显示,反之亦然.那部分工作正常.
我不希望我的用户能够删除行,但我无法找到在何处/如何禁用和隐藏单元格左侧的删除按钮.任何意见,将不胜感激.