2012-08-30 106 views
0

我的應用程序底部顯示廣告時有一個旋轉橫幅,當用戶單擊旋轉時,具有簡單webview和頂部工具欄的視圖控制器顯示顯示網頁特定到橫幅。這一切都工作正常,除了我需要工具欄中的關閉按鈕。出於某種原因,我將關閉按鈕鏈接到應該在點擊日誌時顯示「關閉」的操作。我運行該應用程序並單擊該按鈕,並在錯誤日誌中沒有消息時發生錯誤的訪問錯誤。當點擊橫幅按鈕項目時,應用程序崩潰

這是顯示帶有webview的視圖控制器的地方。它是通過應用程序委託中的方法調用的,可以從應用程序中的任何位置訪問它。

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"); 
} 

感謝您的幫助提前!

回答

1
BannerViewer* viewer = [BannerViewer alloc]; 

分配對象後,您需要通過調用指定的初始化程序對其進行初始化。對於UIViewController子類編程實例,你要像下面這樣:

BannerViewer* viewer = [[BannerViewer alloc] initWithNibName:nil bundle:nil]; 
+0

nope,仍然崩潰,它很難知道在什麼時候通過IB鏈接某個東西來獲得更多信息的地方 – user987723

0

我正好遇到這個問題爲好。

爲了解決這個問題,我將新的UIViewController放入了一個屬性中。

@property (nonatomic, strong) ThirdViewController *theSecondView; 

xcode給我的信息很少,它看起來像是內存問題。看起來似乎在發生的事情是,當按鈕被按下時,視圖被創建,但是ARC在創建它之後不久就釋放它在內存中的位置,所以單擊該按鈕只是讓Xcode適合。

如果使用強屬性,則新視圖在內存中擁有更強的引用,直到父視圖Controller也被釋放後纔會釋放該引用。

相關問題