我是iOS世界的新手,我想知道如何制作一个UITableView
自定义单元格,其外观和行为与您尝试在设备上配置某些WiFi连接时的单元格相似。 (你知道UITableView
的单元格包含UITextField
s的蓝色字体,你设置了ip地址和所有东西......)。
答案 0 :(得分:9)
要制作自定义单元格布局确实涉及一些编码,所以我希望不要吓到你。
首先要创建一个新的UITableViewCell
子类。我们称之为InLineEditTableViewCell
。您的界面InLineEditTableViewCell.h
可能如下所示:
#import <UIKit/UIKit.h>
@interface InLineEditTableViewCell : UITableViewCell
@property (nonatomic, retain) UILabel *titleLabel;
@property (nonatomic, retain) UITextField *propertyTextField;
@end
您的InLineEditTableViewCell.m
可能如下所示:
#import "InLineEditTableViewCell.h"
@implementation InLineEditTableViewCell
@synthesize titleLabel=_titleLabel;
@synthesize propertyTextField=_propertyTextField;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Here you layout your self.titleLabel and self.propertyTextField as you want them, like they are in the WiFi settings.
}
return self;
}
- (void)dealloc
{
[_titleLabel release], _titleLabel = nil;
[_propertyTextField release], _propertyTextField = nil;
[super dealloc];
}
@end
接下来,您可以像在视图控制器中一样设置UITableView
。执行此操作时,您必须实现UITablesViewDataSource
协议方法- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
。在为此插入实现之前,请记住视图控制器中的#import "InLineEditTableViewCell"
。执行此操作后,实现如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
InLineEditTableViewCell *cell = (InLineEditTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"your-static-cell-identifier"];
if (!cell) {
cell = [[[InLineEditTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"your-static-cell-identifier"] autorelease];
}
// Setup your custom cell as your wish
cell.titleLabel.text = @"Your title text";
}
就是这样!您现在在UITableView
。