У меня есть webView в моем firstViewController. Я разрешаю пользователю изменять некоторые аргументы в URL-адресе в другом viewController (secondViewController).Вид не загружается после уклонения ViewControllerAnimated
Я представляю этот контроллер второго представления, чтобы позволить пользователю сделать это. Когда он закончил (он нажимает кнопку «done» и вызывает функцию rejectViewControllerAnimated), Я хотел бы получить изменения url и загрузить его в viewViews webView. Но webView, похоже, не загружается ... это проблема.
Вот пример.
firstViewController.h:
.......
#import "SecondViewController.h"
.....
@property (strong, nonatomic) IBOutlet UIWebView *webView;
.....
firstViewController.m:
@synthesize webView;
SecondViewController *csvc = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
csvc.OLDurlInWebView = webView.request.URL.absoluteString;
csvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:csvc animated:YES completion:nil];
......
......
......
//I'm calling this method after dismissViewControllerAnimated from secondViewControllerClass
-(void)showInView:(NSString *)str {
[self view];
[self loadView];
[self view];
[self openURL:[NSURL URLWithString:str]];
UIActionSheet *sheet = [[UIActionSheet alloc]initWithTitle:@"TEST" delegate:nil cancelButtonTitle:@"TEST" destructiveButtonTitle:nil otherButtonTitles:@"TEST", nil];
NSLog(@"current:%@ isLoaded:%d",webView.request.URL.absoluteString,self.isViewLoaded); //output 'current:(null) isLoaded:1'
[sheet showInView:self.view];//this sheet test will not show, the app will crash:'Sheet can not be presented because the view is not in a window:.......'
}
-(void)openURL:(NSURL *)url {
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
NSLog(@"Trying to open %@ in webbrowser", url);
[webView loadRequest:request];
}
secondViewController.h:
.......
#import "FirstController.h"
.......
@interface SecondViewController : UIViewController {
NSString *OLDurlInWebView;
.......
}
.......
@property (strong, nonatomic) NSString *OLDurlInWebView;
- (IBAction)doneButton:(id)sender;
.......
secondViewController.m:
@synthesize OLDurlInWebView;
......
- (IBAction)doneButton:(id)sender {
[self dismissViewControllerAnimated:NO/*YES*/ completion:nil]; //completion???
}
-(void)viewDidDisappear:(BOOL)animated {
NSLog(@"SecondViewC didDisappear");
WebViewController *wb = [self.storyboard instantiateViewControllerWithIdentifier:@"web"];
NSString *newurl = @"http://facebook.com"; //let the user load facebook as example
[wb view];
[wb loadView]; //testing everything, nothing works
[wb view];
[wb performSelector:@selector(showInView:) withObject:newurl afterDelay:5];//the webView will not load after 5 seconds. Why?
}
Хорошо, с самого начала:
В firstViewController:
Я представляю на secondviewcontroller.
Сейчас мы находимся в secondViewController:
Теперь пользователь изменит URL, но в этом примере он изменит URL на facebook.com.
Теперь мы отправим этот новый url (facebook.com) в firstViewController. Пользователь нажимает кнопку doneButton и вызывается функцияОтслеживаниеViewAnimated.
В попытке вернуться к первому контроллеру с этим новым URL-адресом (facebook).
Я проверил все, что знаю, чего недостаточно. Я тестировал вызов нормальной функции в firstViewController из secondViewController. WebView не сможет загружать запросы.
Затем я протестировал, чтобы ввести код в viewDidDisappear и дать 5 секунд для загрузки, но он не работает.
У меня была эта проблема некоторое время назад, когда мое приложение обрабатывает ссылку схемы URL в делегате приложения. - (BOOL) application: (UIApplication *) application handleOpenURL: (NSURL *) url например, если вы не хотите загружать другой webView/метку с URL-адресом или текстом по ссылке схемы URL? Как это сделать из делегата приложения? это та же проблема, что и выше.
Что я делаю неправильно/что я не знаю? Как «подождать» для загрузки, а затем загружать, например, webView с URL-адресом.?
[self.presetingViewController setMyProperty:]; не существует ... –
setMyProperty будет свойством на presetingViewController. Вы бы определили его, когда вы подклассифицируете UIViewController, а затем используете его как представляющий viewController. –