填充UITableView:空表。为什么?

时间:2017-07-18 19:57:56

标签: ios objective-c uitableview uiwebview

我将简要解释一下。

我有两个在它们之间传递数据的类。在一个班级(我称之为1级)我有一个警报控制器,我得到一个标题和一个HTML文本。

- (IBAction)downloadPage:(id)sender {
    NSString *html = [self.webView stringByEvaluatingJavaScriptFromString:
                  @"document.body.innerHTML"];

    UIAlertController * alertController = [UIAlertController alertControllerWithTitle: @"Inserisci il titolo"
                                                                          message: @""
                                                                   preferredStyle:UIAlertControllerStyleAlert];

    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"Titolo";
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        textField.borderStyle = UITextBorderStyleRoundedRect;
    }];


    [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        // Do you calculation and UI refresh on the main thread
        dispatch_async(dispatch_get_main_queue(), ^{
            NSArray * textfields = alertController.textFields;

            UITextField * title = textfields[0];
            InfoHtml *newFeed = [[InfoHtml alloc] init];
            newFeed.title = title.text;
            newFeed.html = html;

            [self.arrayHTML addObject:newFeed];

            NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.arrayHTML]; 
            [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"html"]; //salvo in userdefault
            [[NSUserDefaults standardUserDefaults]synchronize];
        });
    }]];

其中,InfoHtml是此类型的类模型:

@interface InfoHtml : NSObject <NSCoding>
@property (nonatomic,strong) NSString *title;
@property (nonatomic,strong) NSString *html;
@end

确定。现在:

第二个类(我称之为第2类)需要检查是否有从类1中保存的数据以及是否要在UITableView中打印所有数据

然后:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.tableView reloadData];
     self.arrayHTML = [[NSMutableArray alloc]init]; 
}

-(void) viewWillAppear:(BOOL)animated{
    NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"html"];

    if(data!=nil){         
        self.arrayHTML = [NSKeyedUnarchiver unarchiveObjectWithData: data];
        [self.tableView reloadData];
    }else{
        NSLog(@"no data");
    }

我已在 viewWillAppear 方法中插入数据提取,因为此控制器已连接到控制器标签栏,因此每次打开此控制器时,您都必须检查是否有任何新数据或不

然后,在cellForRowAtIndexPath中,我有:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    InfoHtml *infoToShow = [self.arrayHTML objectAtIndex:indexPath.row];
    cell.textLabel.text = infoToShow.title; //setto titolo
    return cell;
}

我不明白为什么UITableView保持为空并且不会填充。数据存在是因为NSData * data = [[NSUserDefaults standardUserDefaults] objectForKey: @ "html"];它给了我一些非零的东西。

0 个答案:

没有答案