[英]IBAction error in subview
我有兩節課:
我有以下代碼:
MeuPrimeiroViewController.h
- (IBAction)botao:(id)sender;
MeuPrimeiroViewController.m
#import "MeuPrimeiroViewController.h"
#import "MeuSegundoViewController.h"
- (IBAction)botao:(id)sender{
MeuSegundoViewController *segundo = [[MeuSegundoViewController alloc] init];
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *view = segundo.view;
[window addSubview:view];
}
這個命令很好用,但是在“ SegundoViewController”中,我有以下代碼:
MeuSegundoViewController.h
- (IBAction)botaoback:(id)sender;
MeuSegundoViewController.m
- (IBAction)botaoback:(id)sender{
NSLog(@"Back messange");
}
但是控制台日志不返回任何消息,模擬器將我返回到main.m文件,為什么?
當您這樣做時:
[window addSubview:view];
屬於MeuSegundoViewController
的視圖將由其新的MeuSegundoViewController
視圖(窗口)保留,但視圖控制器實例segundo
不是-並被銷毀。 因此,當您按下按鈕時,您將得到一個異常,因為無法調用segundo
實例。
我懷疑您是否真的想將視圖添加為窗口的子視圖。 最好將它添加為MeuPrimeiroViewController
視圖的子視圖,或者具有導航控制器並將兩個視圖控制器都推入其中。 如果使用導航控制器,則它將保留視圖控制器(並防止崩潰)。 如果使用MeuPrimeiroViewController
則調用:
[self addChildViewController:segundo];
如果繼續使用該窗口,則需要保留視圖控制器的東西(沒有明顯的選擇)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.