我将简要解释一下。
我有两个在它们之间传递数据的类。在一个班级(我称之为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"];
它给了我一些非零的东西。