从其他View Controller表视图引用阵列

时间:2016-06-17 22:10:43

标签: ios objective-c uitableview uisegmentedcontrol

我正在尝试使用分段控件将搜索数据显示为类别。但是,虽然收到了数据但它没有显示在我的桌子上。这是我的两个视图控制器的代码。子视图控制器是存储UITableView的控制器。

PARENT VC

- (void)searchPeople:(NSString*)text {
    if(![text isEqualToString:@""]){
        PFQuery *userWithName = [PFQuery queryWithClassName:@"_User"];
        [userWithName whereKey:@"fullName" containsString:text];

        PFQuery *userWithHandle = [PFQuery queryWithClassName:@"_User"];
        [userWithHandle whereKey:@"username" containsString:text];

        PFQuery *userQuery = [PFQuery orQueryWithSubqueries:@[userWithHandle,userWithName]];
        [userQuery findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) {
            NSLog(@"USERS: %@",results);
            [self.userResults removeAllObjects];
            [self.userResults addObjectsFromArray:results];
            [[ArrayManager sharedInstance].searchResults addObjectsFromArray:results];
            NSLog(@"Count Number: %@", [ArrayManager sharedInstance].searchResults);
            [[NSNotificationCenter defaultCenter] postNotificationName:@"reload_data" object:self];
        }];
    }
}

CHILD VC

-(void)handle_data {
    [self.tableView reloadData];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSLog(@"Object Entries: %lu", (unsigned long)[[ArrayManager sharedInstance].searchResults count]);
    NSMutableArray * array = [[ArrayManager sharedInstance] getGlobalArray];

    return [array count];
}

- (void)tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSDictionary *data = [[ArrayManager sharedInstance]init].searchResults[indexPath.row];
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:MyIdentifier];
    }

    cell.textLabel.text = data[@"objectId"];
    return cell;
}

数据从服务器返回正常,但表中没有数据显示。 ArrayManager类是Singleton类。

1 个答案:

答案 0 :(得分:0)

创建数据访问对象(DAO)并将所有信息存储在数组中。

http://www.tutorialspoint.com/design_pattern/data_access_object_pattern.htm

让VC改变并访问DAO而不是相互访问。这样简单得多。