使用标题时加载表格部分

时间:2010-05-20 18:57:44

标签: iphone iphone-sdk-3.0

我似乎无法绕过这个。我用谷歌搜索,并在几个小时内进行了搜索,寻找可以与之相关的例子。我所拥有的是两个阵列。

我的第一个NSMutableArray的名字是“showDates”。

I have 3 objects in here.
Object 0: "Today, May 20th"
Object 1: "Tomorrow, May 21st"
Object 2: "Saturday, May 22nd"

然后我将第二个NSMutableArray命名为“showTimes” 我在那里有大约15个对象,每个对象都有字符串。 ( 我希望这是有道理的? ) 每个对象的结构如下:

       Object 0:
          showID @"98022"
          eventID @"833"
          showTime @"1:30pm"
          showDate @"Today, May 20th"
          auditorium @"9"
          venue @"2991"

       Object 1:
          showID @"98222"
          eventID @"813"
          showTime @"2:30pm"
          showDate @"Tomorrow, May 21st"
          auditorium @"9"
          venue @"2991"

Etc, etc, ....

我的tableView中的标题工作得很好,但我似乎无法弄清楚如何在正确的标题下的“showTimes”数组中添加对象。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

在表视图的dataSource类中,需要实现方法tableView:cellForRowAtIndexPath:为表中的每一行提供单元格。使用

[indexPath section]

其中indexPath是传递给方法的第二个参数,您可以确定请求的单元属于哪个部分(您还需要实现numberOfRowsInSection:通知表视图它应该在每个部分中请求的单元数) 。希望有所帮助。

答案 1 :(得分:1)

详细

首先,您需要在TableView的数据源中实现numberOfRowsInSection:方法。 此方法将NSIndexPath(这是一个整数)的行作为参数。在TableView中使用时,NSIndexPath具有属性sectionrow。您需要做的就是获取section属性的值,并返回您希望在该部分中显示的行数。例如:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   switch(section)
   {
      //This would represent your first section, "Today..."
      case 0: //implement logic to find how many data objects need to be represented as rows for this section
         break;
      //second section, "Tomorrow"
      case 1: //logic
         break;
      //third section
      case 2:  //logic
         break;
   }
}

现在你已经完成了,现在是实施cellForRowAtIndexPath:的时候了。与前一个方法不同,这个方法将整个NSIndexPath作为参数,通常在文档中称为indexPath。只需使用属性访问者indexPath.section找到路径部分,然后使用indexPath.row找到该部分中的行。

重要提示

话虽如此,如果重新排列ShowTimes数组中当前包含的信息,这一切可能会更容易一些。如果数组没有排序,那么(例如)我为numberOfRowsInSection:显示的每种情况下的逻辑将要求您遍历整个数组并测试每个元素以查看它是否属于所请求的表部分。我建议在显示表之前将ShowTimes数组拆分为三个独立的数组(每个部分一个),这样您只需要在每种情况下对相应的数组进行简单的count调用。 cellForRowAtIndexPath:的实施也将得到简化。

摘要

这样想。像numberOfSectionsInTableView:numberOfRowsInSection:之类的方法决定了表中行的布局,甚至在单个单元格被加载之前 - 甚至在您的数据被考虑之前。在将要显示每个单元格时,cellForRowAtIndexPath:将根据单元格的NSIndexPath确定该单元格将包含的内容,或者更具体地,基于该IndexPath的sectionrow属性。
简而言之,将单元格与其内容相关联的唯一方法是IndexPath,cellForRowAtIndexPath:决定链接的制作方式。

如需进一步阅读,请从TableView Programming Guide查看此页面。具体而言,标题为“使用数据填充表格视图”一节。