切换视图控制器后添加标签

时间:2015-01-30 19:01:34

标签: ios tags segue viewcontroller

我有一个随机生成的int,我在ViewWillAppear的故事板上分配给UIImageView的标签。

当我转到主菜单并尝试再次进入视图时,应用程序崩溃了。我知道它是因为标签,因为当我删除它时一切正常。

为什么它第一次有效而不是在那之后的时间有任何想法?代码如下。

ViewController.h:

@interface ViewController : UIViewController{
    int tagnumber;
    IBOutlet UIImageView *box;
    ...
}

ViewController.m:

-(void)viewWillAppear:(BOOL)animated{
    tagnumber = arc4random()%1000;
    box.tag = tagnumber;
    ...
}

- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
{
    [_animator removeAllBehaviors];
    [box removeFromSuperview];
}

MainMenu.m:

-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
}

1 个答案:

答案 0 :(得分:0)

基本上,当视图消失且系统内存不足时,它将调用UIViewController的didReceiveMemoryWarning实现。这里有一个很好的描述:ViewWillDisappear versus dealloc

当您创建IBOutput时,您应该通过说@property (weak, nonatomic) IBOutlet UIImageView *box来指向它。视图保留其子视图,因此,如果视图被取消分配,其子视图会将计数减少一个。当视图消失时,系统将决定何时取消分配self.view,如果取消分配,它将自动释放框,并且框也将被取消分配。你真的不需要担心它。