简体   繁体   English

TableView不显示来自parse.com的数据

[英]TableView does not display data from parse.com

Hi everyone beginner here. 大家好,初学者在这里。 I have a table view inside the ViewController. 我在ViewController中有一个表格视图。 Content of the cell will be taken from parse.com. 该单元格的内容将来自parse.com。 (A String) I already put necessary frameworks and set up a class in parse with a column and some rows. (一个字符串)我已经放置了必要的框架,并建立了一个具有一列和一些行的解析类。 I can tap the cells in simulator and when i add or delete new rows in parse the cells i can tap also changes. 我可以点击模拟器中的单元格,当我在解析单元格中添加或删除新行时,我也可以点击更改。 But somehow the table turns empty, no label is displayed. 但是以某种方式表变成空的,没有标签显示。 I have no errors or issues. 我没有错误或问题。 Here is the code: 这是代码:

ViewController.h ViewController.h

#import <UIKit/UIKit.h>
#import <Parse/Parse.h>
#import "TableCell.h"

@interface ViewController : UIViewController <UITableViewDelegate> {

NSArray *Event;
}
@property (weak, nonatomic) IBOutlet UITableView *newsTable;

@end

ViewController.m ViewController.m

#import "ViewController.h"
#import "TableCell.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize newsTable;


- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self performSelector: @selector(retreiveFromParse)];

}

- (void) retreiveFromParse {
PFQuery *retrieveEvents = [PFQuery queryWithClassName:@"News"];
[retrieveEvents findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        Event = [[NSArray alloc] initWithArray:objects];

}
    [newsTable reloadData];
}];
}

//*********************Setup table of folder names ************************

//get number of sections in tableview
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}

//get number of rows by counting number of folders
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return Event.count;
}

//setup cells in tableView
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath       *)indexPath {

//setup cell
static NSString *CellIdentifier = @"EventCell";
TableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

PFObject *tempObject = [Event objectAtIndex:indexPath.row];

cell.TitleLabel.text = [tempObject objectForKey:@"TitleLabel"];

return cell;
}


//user selects folder to add tag to
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cell tapped");
}



- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

Few corrections - 很少更正-

  1. First - it will be more appropriate to use a @property for the event array. 首先-将@property用于事件数组会更合适。
  2. Second - it will be more appropriate to use Lowercased property name. 其次-使用小写的属性名称会更合适。
  3. Your Array is not retained (it is nil), this is why you see nothing. 您的数组未保留(为nil),这就是为什么什么都看不到的原因。

So, you should : 因此,您应该:

Add this to your interface - 将此添加到您的界面-

  @property (strong, nonatomic) NSArray *events;

Add this to your viewDidLoad, before you call retreiveFromParse 在调用retreiveFromParse之前,将其添加到viewDidLoad中

 - (void)viewDidLoad
     {
       [super viewDidLoad];
        self.events = [NSArray array];
        // Do any additional setup after loading the view, typically from a nib.
        [self performSelector: @selector(retreiveFromParse)];
      }

That should work. 那应该工作。

BTW Parse has a TableViewController class that can simplify your work, look here - Parse PFQueryTableViewController BTW Parse有一个TableViewController类,可以简化您的工作,请看这里-Parse PFQueryTableViewController

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM