Сохранение значения переменной в том же VC, но очистка значения после изменения VC ObjectiveC - PullRequest
0 голосов
/ 25 апреля 2018

My Classes VC имеет верхний сегментный элемент управления с разными датами.Когда пользователь нажимает на даты, он загружает контент в соответствии с dtDate и вызывает метод LoadClasses.

Теперь у меня есть еще один Search VC. При нажатии на поиск он будет отображаться как stringClasses VC Я использую NSDefault for key txtURLFromSearch для сохранения string и обратного вызова NSDefault for key txtURLFromSearch в Classes VC

После этого я приравниваю строку к sURLFromSearch и хочу сохранить ее в Classes VC Но когда пользователь отклоняет этот VC, я хочу очистить строковое значение NSDefault для ключа txtURLFromSearch

Я буду использовать sURLFromSearch, чтобы выполнить некоторую проверку, и он либо добавит и загрузит sURL, либо просто по умолчаниюSurl.

Чего я пытаюсь достичь:

  1. Когда пользователь USER выходит из Classes VC, как очистить NSDefault for key txtURLFromSearch

  2. Есть ли лучший способ для передачи и передачи данных от Search VC до Classes VC.Строка будет сохранена на Classes VC, но когда пользователь отклонит Classes VC, все значения строки будут очищены из Classes VC?

Pic

@synthesize sURL;
@synthesize sURLFromSearch;

- (void)viewDidLoad
{
    [super viewDidLoad];

    dtDate = [[NSMutableArray alloc] init];

    [self setupSegmentButtons];

    NSDate *now = [NSDate date];
    NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd/MM/YYYY"];
    sDtDate = [dateFormatter stringFromDate:now];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    sURLFromSearch = [defaults objectForKey:@"txtURLFromSearch"];

    NSLog(@"=====%@******",sURLFromSearch);

    [self LoadClasses];
}

-(void)viewWillAppear:(BOOL)animated {

    //=== Is there something I need to do here?
}

-(void)viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:animated];
    //=== The following doesn't work, when I switch back to this View, 
    //=== It will set txtURLFromSearch to Empty String. 
    //NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    //[defaults setObject:@"" forKey:@"txtURLFromSearch"];
    //[defaults synchronize];
}

- (void)LoadClasses {

    NSLog(@"======sURLFromSearch====%@**********", sURLFromSearch);

    if ([sURLFromSearch length] !=0 ) {

       //=====sURL 1=======
       sURL = [sURL stringByAppendingString:sURLFromSearch];

       NSLog(@"==== sURL1: %@ ", sURL);

    } else {

       //=====sURL 2=======
       sURL        
    }

NSURL *url = [NSURL URLWithString:sURL];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[webView loadRequest:urlRequest];
[webView setDelegate:(id<UIWebViewDelegate>)self];

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[webView.scrollView addSubview:refreshControl];

}

- (void)handleRefresh:(UIRefreshControl *)refresh {

    NSURL *url = [NSURL URLWithString:sURL];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [webView loadRequest:urlRequest];
    [refresh endRefreshing];
}

Из поиска VC, где я передаю строку.

- (IBAction)btnSearch:(UIButton *)sender {

    sURL = @"From Search, append to Classes sURL";

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:sURL forKey:@"txtURLFromSearch"];
    [defaults synchronize];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UITabBarController *tabView = [storyboard instantiateViewControllerWithIdentifier:@"profileView"];
tabView.selectedIndex=1;
    [self presentViewController:tabView animated:YES completion:nil];

    Classes *vc = [[Classes alloc] init];
    [vc fromSearch:sURL];

}
...