UITableView 创建 4 个正方形

Posted

技术标签:

【中文标题】UITableView 创建 4 个正方形【英文标题】:UITableView create 4 square 【发布时间】:2012-07-30 09:11:28 【问题描述】:

我想用 UITableView 创建日历视图

我希望每行有 4 个正方形,如下图所示:

你能帮帮我吗,我怎样才能在桌子的一行中有 4 个正方形 我知道如何创建具有不同部分和行的动态表格视图,但如何才能在一行中有 4 个正方形?

提前致谢!

Edit1:我在 viewDidLoad 中的代码:

 - (void)viewDidLoad

[super viewDidLoad];
NSMutableArray *keys = [[NSMutableArray alloc] init];
NSMutableDictionary *contents = [[NSMutableDictionary alloc] init];

NSString *monKey = @"Monday";
NSString *tueKey = @"Tuesday";
NSString *wedKey = @"Wednday";
NSString *thuKey = @"Thusday";
NSString *friKey = @"Friday";
NSString *satKey = @"Satuarday";
NSString *sunKey = @"Sunnday";

[contents setObject:[NSArray arrayWithObjects:@"Work Time", @"Absence", nil] forKey:monKey];
[contents setObject:[NSArray arrayWithObjects:@"Compensation", @"Work Time", @"Absence", nil] forKey:wedKey];
[contents setObject:[NSArray arrayWithObjects:@"Compensation", @"Work Time", nil] forKey:tueKey];
[contents setObject:[NSArray arrayWithObjects:@"Compensation", @"Work Time", nil] forKey:thuKey];
[contents setObject:[NSArray arrayWithObjects:@"Compensation", @"Work Time", nil] forKey:friKey];
[contents setObject:[NSArray arrayWithObjects:@"Compensation", @"Work Time", nil] forKey:satKey];
[contents setObject:[NSArray arrayWithObjects:@"Compensation", @"Work Time", nil] forKey:sunKey];

[keys addObject:tueKey];
[keys addObject:monKey];
[keys addObject:wedKey];
[keys addObject:thuKey];
[keys addObject:friKey];
[keys addObject:satKey];
[keys addObject:sunKey];



[self setSectionKeys:keys];
[self setSectionContents:contents];

// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;

// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
self.navigationItem.leftBarButtonItem = self.editButtonItem;
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
target:self action:@selector(addNewItem)];
self.navigationItem.rightBarButtonItem = rightButton;

我在 cellForRowAtIndexPath 中的代码

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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
    cell = [[UITableViewCell alloc] initWithFrame:CGRectZero]; 

cell.selectionStyle = UITableViewCellSelectionStyleNone;

int column = 4;
for (int i=0; i<column; i++) 

    UIImageView *aBackgroundImageView = [[UIImageView alloc]initWithFrame:CGRectMake(32+184*i,10, 167,215)];
    aBackgroundImageView.tag = (column*indexPath.row)+i;
    [cell.contentView addSubview:aBackgroundImageView];
   // [aBackgroundImageView release];

return cell;

【问题讨论】:

【参考方案1】:

试试这个代码:-

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

   static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero] autorelease]; 
    
   cell.selectionStyle = UITableViewCellSelectionStyleNone;
int column = 4;

   for (int i=0; i<column; i++) 

        UIImageView *aBackgroundImageView = [[UIImageView alloc]initWithFrame:CGRectMake(32+184*i,10, 167,215)];
        aBackgroundImageView.tag = (column*indexPath.row)+i;
        [cell.contentView addSubview:aBackgroundImageView];
        [aBackgroundImageView release];
    
  return cell;

列将在一个单元格中显示您想要的项目数。

【讨论】:

它说使用了未声明的标识符 只需将 int column = 4 放在您的 cellForRowAtIndexPath 方法中此代码段的上方。 4 表示您要在表格视图中的单行中放置的列数。 这应该只是单元格标识符。确保您传递给dequeueReusableCellWithIdentifier: 的字符串已定义,即static NSString *cellIdentifier = @"CellId"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; @ErenBeşel 现在我没有任何错误,但是我如何测试它,因为当我运行程序时我的单元格中没有任何东西 @ErenBeşel 我应该在 viewDidLoad 中添加一些东西吗?【参考方案2】:

如果您想创建日历视图,请查看this code 了解一些想法(取决于您想要实现的目标)。

要创建一个包含四个大小相同的单元格的UITableView 行,只需实现tableView:cellForRowAtIndexPath: 数据源方法来创建一个视图,例如四个大小相同的UILabels。

【讨论】:

能否请您通过示例告诉我如何在 uitableview 中在一行中创建 4 个单元格我不知道该怎么做 UITableView 中的每一行都是一个单元格。每行不能有多个单元格,但每个单元格可以包含任意数量的视图。只需使用addSubview: 为每个单元格(=行)添加多个视图。

以上是关于UITableView 创建 4 个正方形的主要内容,如果未能解决你的问题,请参考以下文章

表视图的 headerView 中的 UITableView

UITableviewcell 是错误的数据

来自故事板的 UITableView - 使用 UITableViewStyleGrouped 初始化

Android 布局,有 4 个正方形,每个正方形内有一个按钮

UITableView 常用属性及方法

UITableView reloadData 在没有行的情况下无法工作