是否可以静态创建UITableView的数据?

时间:2011-06-06 02:33:15

标签: ios uitableview uikit

是否可以使用静态数据设置UITableView / UITableViewController?或者是否总是需要填写UITableViewDataSource协议并返回单个条目并按需创建单元格?

在这种情况下,我想要做的就是使用快速的tableview控制器让用户从一个不会改变的已知值的简短列表中进行选择。为静态数据填写所有这些函数似乎需要做很多额外的工作。

1 个答案:

答案 0 :(得分:3)

“静态数据”是指硬编码而不是数据源?

无论哪种方式,过程都是一样的。你必须通过cellAtIndexPath返回单元格:你可以用“if块”完成这个,假设你想要的只是一些硬编码的行。

例如:

// How many sections in the table? Hard coded to 1 here
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
  return 1;
}

// How many rows in the table? Hard coded to 2 here
- (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection:(NSInteger)section {
  return 2;
}

// Method for returning data from anywhere, even hard coded
// Notice how we use row and section, these tell us which cell in the table we are returning
- (UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
  NSInteger row = [indexPath row];
  NSInteger section = [indexPath section];

  // Dequeue a cell using a common ID string of your choosing
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCellID"];

  // Return cells with data/labels/pretty colors here
  if (row == 0)
  {
    cell.textLabel.text = @"I can haz cheezburger";
  }
  else if (row == 1)
  {
    cell.textLabel.text = @"I hate lol catz";
  }

  // Pretty em up here if you like
  cell.selectionStyle = UITableViewCellSelectionStyleGray;
  cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
  return cell;  
}

一旦你了解了Cocoa方式,它就非常简单,但它不是“简单”。