我有一點問題。 所以它在這裏:表視圖不會從Parse.com重新載入數據
我有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;
}
在代碼中沒有任何地方我看到任何導致PlacesViewController視圖加載的結果。您需要在似乎尚未從xib加載的tableview上查看結果。 –
@mithleshjha我的TableView從Storyboard加載。我沒有發佈整個ViewDidLoad。我設置了tableView的委託和數據源。你能解釋一下,如果還有其他什麼嗎?謝謝 – Sebyddd
顯示你的cellforrowatindexpath方法.. – rptwsthi