我有点问题。 所以这就是:
我有一个带有UITableView(委托和数据源集)的UIViewController。在我的ViewDidLoad中,我从Parse.com查询所有数据并将其存储在多个NSMutableArrays中(我在向对象添加对象之前进行初始化)
viewDidLoad
:
PFQuery *query = [PFQuery queryWithClassName:@"PlacesClass"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
for (PFObject *object in objects) {
[titlesArray addObject:object[@"PlaceName"]];
[thumbnailsArray addObject:object[@"PlaceImageURL"]];
}
finishedLoading = YES;
[self.tableView reloadData];
} else
NSLog(@"Error: %@ %@", error, [error userInfo]);
}];
它运作良好。它在TableView中正确显示数据。 但是,我有一个带有TableView的滑动菜单和一些类别。当您点击其中一个类别时,我再次进行查询以获取具有特定类别的所有对象,如下所示:
-(void)searchWithCategory{
AppDelegate * delegate = DELEGATE;
_categoryToSearch = delegate.categoryToSearch;
PFQuery *query = [PFQuery queryWithClassName:@"PlacesClass"];
[query whereKey:@"Category" equalTo:_categoryToSearch];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSMutableArray *titlesArray2 = [[NSMutableArray alloc]init];
NSMutableArray *thumbnailsArray2 = [[NSMutableArray alloc]init];
NSMutableArray *facebookArray2 = [[NSMutableArray alloc]init];
NSMutableArray *twitterArray2 = [[NSMutableArray alloc]init];
NSMutableArray *addressArray2 = [[NSMutableArray alloc]init];
NSMutableArray *descriptiomArray2 = [[NSMutableArray alloc]init];
NSMutableArray *locationArray2 = [[NSMutableArray alloc]init];
for (PFObject *object in objects) {
[titlesArray2 addObject:object[@"PlaceName"]];
[thumbnailsArray2 addObject:object[@"PlaceImageURL"]];
[facebookArray2 addObject:object[@"PlaceFacebookAddress"]];
[twitterArray2 addObject:object[@"PlaceTwitterAddress"]];
[addressArray2 addObject:object[@"PlaceAddress"]];
[descriptiomArray2 addObject:object[@"PlaceDescription"]];
[locationArray2 addObject:object[@"PlaceLocation"]];
}
titlesArray = titlesArray2;
thumbnailsArray = thumbnailsArray2;
descriptiomArray = descriptiomArray2;
facebookArray = facebookArray2;
twitterArray = twitterArray2;
addressArray = addressArray2;
locationArray = locationArray2;
finishedLoading = YES;
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
} else
NSLog(@"Error: %@ %@", error, [error userInfo]);
}];
}
当选择类别时,我从滑动视图控制器的类中调用此方法。我NSLogged数组和新数据是正确的。它显示特定类别中的正确对象。
但是TableView不会重新加载。我在主线程上运行reloadData
,但我仍然没有收到来自cellForRowAtIndexPath
或numbersOfRowsInSection
的信号。我正在使用自定义UITableViewCell。我不知道它是否与此相关,但我尝试使用简单的UITableViewCells,它仍然是同样的问题。只有在第一次显示数据时才会重新加载TableView。
这就是我从滑动菜单视图控制器调用searchWithCategory
方法的方法:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
AppDelegate * delegate = DELEGATE;
delegate.categoryToSearch = [_categoriesNames objectAtIndex:indexPath.row];
PlacesViewController *pvc = [[PlacesViewController alloc]init];
[pvc searchWithCategory];
}
你们对如何解决这个问题有什么建议吗?我被困了4天左右。 非常感谢你阅读我的问题!
编辑:我的cellForRowAtIndexPath
方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
customCell = (PlacesTableViewCell *)[tableView dequeueReusableCellWithIdentifier: @"PlacesTableViewCell"];
if (customCell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PlacesTableViewCell" owner:self options:nil];
customCell = [nib objectAtIndex:0];
}
if(finishedLoading == YES){
customCell.placeName.text = [titlesArray objectAtIndex:indexPath.row];
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[thumbnailsArray objectAtIndex:indexPath.row]]]];
customCell.thumbnail.image = image;
}
if(indexPath.row == titlesArray.count-1)
finishedLoading = NO;
return customCell;
}
答案 0 :(得分:1)
从你的代码:
您实际上正在使用titlesArray
将数据填充到tableView
。虽然我对这个问题仍然不太确定,但我可以为您提供一份清单,请查看以下内容:
titlesArray
中是否有数据(打印)numberOfRowInSection
titlesArray.count
试试这些,希望它会有所帮助。
答案 1 :(得分:1)
只是为了澄清你的代码
在didSelectRowAtIndexPath
初始化PlacesViewController
然后运行[pvc searchWithCategory];
searchWithCategory方法是在不同的文件中实现的吗?
属性titlesArray
thumbnailsArray
等等......全局变量?
为什么需要初始化PlacesViewController
?
我猜这是一个IPAD应用,你在splitviewcontroller
所以你可以看到两个控制器? PlacesViewController
有自己的tableview吗?
[self.tableview reload]
在-(void)searchWithCategory
中调用哪个tableView?