在同一VC上保留变量值,但在更改VC ObjectiveC后清除该值

时间:2018-04-25 09:33:07

标签: ios objective-c class instance-variables

我的Classes VC在顶部有一个不同日期的分段控件。当用户点击日期时,它会根据dtDate加载内容并调用LoadClasses方法。

现在我有另一个Search VC,当点击搜索时,它会以string传递给Classes 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的所有字符串值?

  3. 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];
    
    }
    

0 个答案:

没有答案