无法在RootViewController中查看表

时间:2011-02-07 12:59:37

标签: iphone objective-c cocoa-touch

我有一个我正在处理的导航应用程序,由于某种原因它不允许我在我的初始屏幕上查看我的表(即从RootViewController)。我有以下方法由我的“viewDidLoad”方法调用:`

- (void) locationManager:(CLLocationManager *)manager 
 didUpdateToLocation:(CLLocation *)newLocation
        fromLocation:(CLLocation *)oldLocation {

` 它做了一些工作,然后调用方法:

- (void) readRestaurantsFromDatabase:(double)userLatitude 
                withUserLocation:(double)userLongitude{

这个方法可以使用名为“sortedArray”的NSArray,它是一个声明的属性,并在RootViewController中合成:

//compile a list of categories
        NSMutableArray *categoryList = [[NSMutableArray alloc] init];
        [categoryList addObject:@"All Types"];

        for (Restaurant *restCat in restaurants){

            [categoryList addObject:restCat.category];
        }


        //remove duplicates 
        NSArray *copy = [categoryList copy];
        NSInteger index = [copy count] - 1;

        for (NSString *restCategory in [copy reverseObjectEnumerator]) {

            if ([categoryList indexOfObject:restCategory inRange:NSMakeRange(0, index)] != NSNotFound) {
                [categoryList removeObjectAtIndex:index];
            }

            index--;

        }

        [copy release];

        //put list in alphabetical order
        sortedArray = [categoryList sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

这就是上述方法的结束方式。然后,我的“cellForRowAtIndexPath”方法有以下代码:

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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// Configure the cell.

NSString *cellValue = [sortedArray objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;

}

对我来说,一切都很好。当我运行我的代码时,我有NSLog语句向控制台发出输出,这清楚地告诉我NSArray sortedArray包含数据。然而,当我在XCode中的iPhone模拟器上运行代码时,我得到一个空表。谁能看到我做错了什么?

感谢所有回复的人。

4 个答案:

答案 0 :(得分:0)

您是否实现了tableView:numberOfRowsInSection:?

这可能会返回[sortedArray count]。

答案 1 :(得分:0)

您填写numbersOfRowInSection吗?

在旁注中,我不明白为什么你要复制所有内容然后删除重复项而不是在数组包含对象时跳过添加。

答案 2 :(得分:0)

您是否已将tableView连接到界面构建器中的属性?

此外,当排序的数组发生更改时,您可能需要调用[myTabelView reloadData];来刷新表。每次更改sortedArray时都这样做。

//put list in alphabetical order
sortedArray = [categoryList sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

// The sorted array has changed, get the table view to refresh
[myTabelView reloadData];

答案 3 :(得分:0)

仔细检查tableview数据源属性。如果没有为UITableView设置数据源。确保将其设置为对象,并确保对象定义 - (NSInteger)tableView:numberOfRowsInSection:方法。

那应该返回[sortedArray count]。