删除Subview和View Controller?

金多边形

我通过以下方式添加子视图”

SettingsViewController *SVC = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]];
[self.parentViewController addChildViewController:SVC];
[self.view addSubview:SVC.view];

我的子视图为300 x 360,位于屏幕中央。当我尝试将其删除(被释放)时,会发生此问题。

当我在这个新视图中按关闭按钮时,我获得了不好的访问权限。添加我的视图的正确方法是什么?我有一个SettingsViewController.xib链接到一个.h和.m文件。

这是我的“设置”视图中的“关闭”按钮的外观:

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

但是,即使我注释掉其中的所有内容,仅触发按钮就会使应用程序崩溃。

这是我的.h文件的样子:

#import <UIKit/UIKit.h>

@interface SettingsViewController : UIViewController

@property (nonatomic, strong) IBOutlet UIView *alertView;
@property (nonatomic, strong) IBOutlet UIButton *closeButton;
@property (nonatomic, strong) IBOutlet UILabel *musicLabel;
@property (nonatomic, strong) IBOutlet UILabel *soundFXLabel;
@property (nonatomic, strong) IBOutlet UILabel *vibrateLabel;
- (IBAction)close:(id)sender;
@end

和我的实现文件:

    #import "SettingsViewController.h"

@interface SettingsViewController ()

@end

@implementation SettingsViewController
@synthesize alertView;

    - (void)viewDidLoad
    {
    [super viewDidLoad];
    self.view.alpha = 0;
    self.alertView.layer.cornerRadius = 10.0f;
    self.alertView.layer.borderColor = [UIColor whiteColor].CGColor;
    self.alertView.layer.borderWidth = 4.0f;
    self.closeButton.layer.cornerRadius = 5.0f;
    self.closeButton.titleLabel.font = [UIFont fontWithName:@"SourceSansPro-Bold" size:20];
    self.musicLabel.font = [UIFont fontWithName:@"SourceSansPro-Bold" size:30];
    self.soundFXLabel.font = [UIFont fontWithName:@"SourceSansPro-Bold" size:30];
    self.vibrateLabel.font = [UIFont fontWithName:@"SourceSansPro-Bold" size:30];


    [UIView animateWithDuration:0.3
                          delay:0.0
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^{
                         self.view.alpha = 1;
                     }
                     completion:^(BOOL finished){
                         //Display Players View

                     }];
    }

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

    - (void)didReceiveMemoryWarning
    {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }

    @end

最后但并非最不重要的,这是我的情节提要/ xib命令的快照:

在此处输入图片说明

nininger

为您的SettingsViewController创建一个属性,在其中添加并在创建它的位置分配它。

// in .h file or private category on top 
    @property (nonatomic, strong) SettingsViewController *settingsController;

// your usual code + assigning controller    
    SettingsViewController *SVC = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]];
    [self.parentViewController addChildViewController:SVC];
    [self.view addSubview:SVC.view];
    self.settingsController = SVC;

注意:此行为的原因是在将ViewController的.view属性添加到您的视图中之后,该控制器被释放了(现在只有.view处于活动状态)。因此,当您尝试击打视图上的按钮时,没有SettingsViewController可以回调这些事件,因此会导致崩溃。当您创建属性并分配它时,控制器将继续存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除Subview和View Controller?

来自分类Dev

从子级View Controller推送View Controller

来自分类Dev

设置backbutton的名称和View Controller的标题

来自分类Dev

View Controller not getting called

来自分类Dev

呈现View Controller太慢

来自分类Dev

x.controller和.controller之间的区别

来自分类Dev

如何从容器中删除最后添加的View Controller

来自分类Dev

删除viewcontroller并移至下一个view controller

来自分类Dev

Swift:是否可以从堆栈中删除View Controller?

来自分类Dev

从导航堆栈中删除中间View Controller-iOS

来自分类Dev

Angular-使用“ Controller As”语法过滤和删除

来自分类Dev

从不是View Controller的类导航到View Controller

来自分类Dev

从目标View Controller推送新的View Controller(swift)

来自分类Dev

Interactive View Controller解雇和更改statusBarStyle不兼容?

来自分类Dev

没有Controller和View的新Rails应用程序

来自分类Dev

带有UIViewController和Storyboard的Model-View-Controller

来自分类Dev

如何设计Controller,Component,View和Helper之间的关系

来自分类Dev

使用标签栏和导航实例化Deep View Controller

来自分类Dev

使用Single View Controller添加和编辑数据?

来自分类Dev

Controller和View中的NameError仅显示html

来自分类Dev

在View Controller和Display之间传递变量

来自分类Dev

ViewModel的某些项目在View和Controller之间丢失

来自分类Dev

没有调用View Controller

来自分类Dev

ng-view的“ Controller as”语法

来自分类Dev

Data is not transferred to next view Controller

来自分类Dev

如何从底部绘制View Controller

来自分类Dev

在View Controller顶部添加SLComposeServiceViewController

来自分类Dev

目前的Popover View Controller Swift

来自分类Dev

修改Popover View Controller的宽度

Related 相关文章

热门标签

归档