簡體   English   中英

子視圖中的IBAction錯誤

[英]IBAction error in subview

我有兩節課:

  1. MeuPrimeiroViewController.h / .m
  2. MeuSegundoViewController.h / .m

我有以下代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM