我的应用程序底部有一个显示广告的旋转横幅,当用户点击旋转时,带有简单webview的视图控制器和顶部的工具栏显示特定于横幅的网页。这一切都很好,除了我需要工具栏中的关闭按钮。出于某种原因,我将关闭按钮链接到单击时应在日志中显示“关闭”的操作。我运行应用程序并单击按钮,并在错误日志中没有消息时发生错误的访问错误。
这是显示带有webview的viewcontroller的地方。它是从app委托中的方法调用的,可以从应用程序的任何位置访问。
BannerViewer* viewer = [BannerViewer alloc];
[viewer setUrl:db.WEBurl];
[_window addSubview: viewer.view];
BannerViewer.h
@interface BannerViewer : UIViewController {
IBOutlet UIWebView* webView;
IBOutlet UIBarButtonItem* close;
IBOutlet UINavigationBar* navBar;
NSURL *url;
}
@property(nonatomic,strong)IBOutlet UIWebView* webView;
@property(nonatomic,strong)NSURL *url;
@property(nonatomic,strong)IBOutlet UIBarButtonItem* close;
@property(nonatomic,strong)IBOutlet UINavigationBar* navBar;
-(IBAction)closeWindow:(id)sender;
@end
BannerViewer.m
-(IBAction)closeWindow:(id)sender{
NSLog(@"close");
}
提前感谢您的帮助!
答案 0 :(得分:1)
BannerViewer* viewer = [BannerViewer alloc];
分配对象后,需要通过调用指定的初始化程序对其进行初始化。对于以编程方式实例化的UIViewController
的子类,您需要以下内容:
BannerViewer* viewer = [[BannerViewer alloc] initWithNibName:nil bundle:nil];
答案 1 :(得分:0)
我刚刚遇到这个问题。
为了解决这个问题,我将新的UIViewController变成了一个属性。
@property (nonatomic, strong) ThirdViewController *theSecondView;
基于xcode为我提供的微量信息,看起来这是一个内存问题。似乎正在发生的事情是当按下按钮时会创建视图,但ARC在创建后不久就会在内存中释放它,因此单击该按钮只会使Xcode适合。
如果使用了强属性,则新视图在内存中保留更强的引用,在父视图Controller也被释放之前不会释放。