gpt4 book ai didi

objective-c - 未调用 UIWebViewDelegate 函数

转载 作者:行者123 更新时间:2023-11-29 13:23:07 27 4
gpt4 key购买 nike

.h文件:

@interface MyView: UIViewController <UIWebViewDelegate> {
UIWebView *webView;
}

.m文件:

-(void)viewDidLoad {
CGRect webFrame = [[UIScreen mainScreen] applicationFrame];
webView= [[UIWebView alloc] initWithFrame:webFrame];
webView.delegate = self;
[self.view addSubview:webView];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]];
}

-(void)webViewDidStartLoad:(UIWebView *)webView {
NSLog(@"start");
}

-(void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"finish");
}

-(void)dealloc {
webView.delegate = nil;
webView = nil;
}

在另一个 ViewController 中创建 MyView:

MyView * myView = [[MyView alloc] init];
[self.view addSubView:myView.view];
myView = nil;

myView 设置为 nil,因此它的委托(delegate)也被销毁。

要解决这个问题,去掉myView = nil这句

谢谢回答我的人。我确实从你的回答中学到了东西。

最佳答案

正如 srikanth 所说,myview 是一个 Controller ,需要在屏幕上告知它并保留它,这样它就不会消失,这就是您眼前的您的案例中的真正问题(我认为)。没有人保留 myView。使它成为一个成员变量,这样它就不会在它给你它的 View 后直接释放 :)。

@interface MyCallerWithDoesTheASI : NSObject {
MyView *myView;
}
@end

或者正确地添加它,像 srikanth 说的那样::

[self addChildViewController:myView];
[self.view addSubview:myView.view];
[myView didMoveToParentViewController:self];

或者例如显示 myView 模态

[self presentViewController:myView animated:NO completion:^{ [[myView dismiss...]; }

关于objective-c - 未调用 UIWebViewDelegate 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13859326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com