Yanıtlar:
UITableView
Bir sahiptir tableHeaderView
özelliği. Bunu orada istediğiniz görünüme ayarlayın.
UIView
Kapsayıcı olarak yenisini kullanın, yeni olana bir metin etiketi ve resim görünümü ekleyin UIView
, ardından tableHeaderView
yeni görünüme ayarlayın.
Örneğin, bir UITableViewController
:
-(void)viewDidLoad
{
// ...
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
[headerView addSubview:imageView];
UILabel *labelView = [[UILabel alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
[headerView addSubview:labelView];
self.tableView.tableHeaderView = headerView;
[imageView release];
[labelView release];
[headerView release];
// ...
}
public override UIView GetViewForHeader(UITableView tableView, nint section) { return headerView; } public override nfloat GetHeightForHeader(UITableView tableView, nint section) { return headerView.Frame.Height; }
Interface Builder'da bunu oldukça kolay yapabilirsiniz. Yalnızca tablo içeren bir görünüm oluşturun ve başka bir görünümü tabloya bırakın. Bu tablo üstbilgisi görünümü olur. Etiketlerinizi ve resminizi bu görünüme ekleyin. Görünüm hiyerarşisi için aşağıdaki resme bakın.
In Swift :
override func viewDidLoad() {
super.viewDidLoad()
// We set the table view header.
let cellTableViewHeader = tableView.dequeueReusableCellWithIdentifier(TableViewController.tableViewHeaderCustomCellIdentifier) as! UITableViewCell
cellTableViewHeader.frame = CGRectMake(0, 0, self.tableView.bounds.width, self.heightCache[TableViewController.tableViewHeaderCustomCellIdentifier]!)
self.tableView.tableHeaderView = cellTableViewHeader
// We set the table view footer, just know that it will also remove extra cells from tableview.
let cellTableViewFooter = tableView.dequeueReusableCellWithIdentifier(TableViewController.tableViewFooterCustomCellIdentifier) as! UITableViewCell
cellTableViewFooter.frame = CGRectMake(0, 0, self.tableView.bounds.width, self.heightCache[TableViewController.tableViewFooterCustomCellIdentifier]!)
self.tableView.tableFooterView = cellTableViewFooter
}
Ayrıca YALNIZCA Arayüz oluşturucuda bir UIView oluşturabilir ve ImageView ve UILabel'i sürükleyip bırakabilirsiniz (istediğiniz başlık gibi görünmesini sağlamak için) ve bunu kullanın.
UIView'iniz de istediğiniz şekilde göründüğünde, programlı olarak XIB'den başlatabilir ve UITableView'ınıza ekleyebilirsiniz. Başka bir deyişle, IB'deki ENTIRE tablosunu tasarlamak zorunda değilsiniz. Yalnızca headerView (bu şekilde başlık görünümü diğer tablolarda da kullanılabilir)
Örneğin, tablo başlıklarımdan biri için özel bir UIView'im var. Görünüm "CustomHeaderView" adlı bir xib dosyası tarafından yönetilir ve UITableViewController alt sınıfımda aşağıdaki kod kullanılarak tablo başlığına yüklenir:
-(UIView *) customHeaderView {
if (!customHeaderView) {
[[NSBundle mainBundle] loadNibNamed:@"CustomHeaderView" owner:self options:nil];
}
return customHeaderView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Set the CustomerHeaderView as the tables header view
self.tableView.tableHeaderView = self.customHeaderView;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,tableView.frame.size.width,30)];
headerView.backgroundColor=[[UIColor redColor]colorWithAlphaComponent:0.5f];
headerView.layer.borderColor=[UIColor blackColor].CGColor;
headerView.layer.borderWidth=1.0f;
UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 5,100,20)];
headerLabel.textAlignment = NSTextAlignmentRight;
headerLabel.text = @"LeadCode ";
//headerLabel.textColor=[UIColor whiteColor];
headerLabel.backgroundColor = [UIColor clearColor];
[headerView addSubview:headerLabel];
UILabel *headerLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(60, 0, headerView.frame.size.width-120.0, headerView.frame.size.height)];
headerLabel1.textAlignment = NSTextAlignmentRight;
headerLabel1.text = @"LeadName";
headerLabel.textColor=[UIColor whiteColor];
headerLabel1.backgroundColor = [UIColor clearColor];
[headerView addSubview:headerLabel1];
return headerView;
}