簡體   English   中英

在iOS 4 SDK上從SuperView刪除視圖

[英]Removing a view from a SuperView on iOS 4 SDK

我正在使用iOS 4 SDK開發iPhone 3.1.3應用程序。

我有兩個ViewController,mainViewController和AboutViewController。

我使用以下代碼從mainViewController轉到AboutViewController(mainViewController.m內部的代碼):

- (IBAction) aboutClicked:(id)sender
{
    AboutViewController* aboutController =
        [[AboutViewController alloc] 
         initWithNibName:@"AboutViewController"
                  bundle:nil];
    [self.view addSubview:aboutController.view];

    [aboutController release];    
}

然后從AboutViewController返回到mainViewController(AboutViewController.m中的代碼):

- (IBAction) backClicked:(id) sender
{
    [self.view removeFromSuperview];
}

當我在AboutViewController上單擊“后退”按鈕時,我得到一個EXC_BAD_ACCESS。

我正在使用基於窗口的應用程序模板。

我也嘗試在[self.view removeFromSuperview]添加一個斷點,但是我不能。

你知道為什么嗎?

改為這樣做:

- (IBAction) aboutClicked:(id)sender
{
    AboutViewController* aboutController =
        [[AboutViewController alloc] 
         initWithNibName:@"AboutViewController"
                  bundle:nil];
    [self presentModalViewController:aboutController animated:YES];

    [aboutController release];    
}

然后從AboutViewController返回到mainViewController(AboutViewController.m中的代碼):

- (IBAction) backClicked:(id) sender
{
    [[self parentViewController] dismissModalViewControllerAnimated:YES]
}

嘗試:

[self presentModalViewController:aboutController animated:YES];

呈現視圖和:

[self dismissModalViewControllerAnimated:YES];

要刪除視圖...

1)使aboutController為類級別的變量

2)創建一個委托方法來處理

(IBAction) backClicked:(id) sender

3)實現委托通話

 [aboutController.view removeFromSuperView];

之所以得到EXC_BAD_ACCESS,是因為在將viewController的視圖添加為子視圖之后,您釋放了控制器,因此touch事件無法看到要處理的viewController。

注釋掉發布聲明,如下所示,它應該可以工作

- (IBAction) aboutClicked:(id)sender
{
    AboutViewController* aboutController =
    [[AboutViewController alloc] 
     initWithNibName:@"AboutViewController"
              bundle:nil];
    [self.view addSubview:aboutController.view];

//[aboutController release]; To avoid leaking consider creating aboutController variable at instance level and releasing it in the dealloc.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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