我尝试在listView中为书签功能创建一个带有3个标签,名称,书籍和章节的自定义UIView。现在我希望标签在tableView的单元格中位于不同的行中。如果您查看下面的代码,哪种方法最好,或者如何在自己的行上制作标签?我是Objective C和Iphone开发的新手。
结果在每个单元格的列表中应如下所示:
--------
name
book
chapter
--------
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"BookmarkCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Bookmark *item = [self.items objectAtIndex:indexPath.row];
NSArray *chunks = [item.name componentsSeparatedByString: @","];
NSString *name;
NSString *book;
NSString *chapter;
if ([chunks count] > 0)
{
name = [chunks objectAtIndex:0];
if ([chunks count] > 1)
{
book = [chunks objectAtIndex:1];
if ([chunks count] > 2)
{
chapter = [chunks objectAtIndex:2];
}
}
}
UIView * pNewContentView= [[UIView alloc] initWithFrame:cell.contentView.bounds];
CGRect labelFrame= pNewContentView.bounds;
labelFrame.size.width= labelFrame.size.width * 0.25;
UILabel* pLabel1=[[UILabel alloc] initWithFrame:labelFrame];
[pNewContentView addSubview:pLabel1];
labelFrame.origin.x= labelFrame.size.width;
UILabel* pLabel2=[[UILabel alloc] initWithFrame:labelFrame];
[pNewContentView addSubview:pLabel2];
labelFrame.origin.x= labelFrame.origin.x + labelFrame.size.width;
UILabel* pLabel3=[[UILabel alloc] initWithFrame:labelFrame];
[pNewContentView addSubview:pLabel3];
[cell.contentView addSubview:pNewContentView];
[pLabel1 setText:(name)];
[pLabel2 setText:(book)];
[pLabel3 setText:(chapter)];
//cell.textLabel.text = name;
//cell.detailTextLabel.text = book;
return cell;
}
答案 0 :(得分:5)
将所有x
替换为y
,将width
替换为height
。检查输出并调整标签的高度和宽度以满足您的要求。
答案 1 :(得分:1)
也许你更容易在Interface Builder中创建自定义单元格,然后在cellForRowAtIndexPath中设置你的单元格,有很多关于这个的演示教程。
如果您想以编程方式执行此操作,那么它应该如下所示:
UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(10,15,300,20)];
name.text = @"some name";
UILabel *book = [[UILabel alloc] initWithFrame:CGRectMake(10,25,300,20)];
book.text = @"some book";
UILabel *chapter = [[UILabel alloc] initWithFrame:CGRectMake(10,35,300,20)];
chapter = @"chapter";
[cell.contentView addSubview:name];
[cell.contentView addSubview:book];
[cell.contentView addSubview:chapter];