iOS – 删除我已删除的属性的引用

我之前创build了一个button,将其命名为“hi”。 我手动删除了我的.h.m文件中的代码,并从故事板中删除了该button,现在我得到下面的错误:

2014-02-08 18:31:53.135 MadLibs2 [7645:70b] *由于未捕获的exception'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:]:该类不是键值编码兼容的键hi “。

如何删除“hi”引用?

 // JBViewController.h // MadLibs2 #import <UIKit/UIKit.h> @interface JBViewController : UIViewController // Properties manage an object's internal data //// A properties data is stored in an instance variable or ivar (eg, *sliderLabel) // The property accesses ivars via getter/setter methods (aka accessors) // put @property in front of the declaration of the ivar // We access properties using the self keyword @property (weak, nonatomic) IBOutlet UILabel *sliderLabel; - (IBAction)sliderChanged:(id)sender; - (IBAction)toggleShowHide:(id)sender; @property (weak, nonatomic) IBOutlet UIView *settingsView; @property (weak, nonatomic) IBOutlet UISwitch *endingSwitch; @property (weak, nonatomic) IBOutlet UILabel *petsLabel; @property (weak, nonatomic) IBOutlet UIStepper *petsStepper; - (IBAction)stepperChanged:(id)sender; - (IBAction)createStory:(id)sender; @end // JBViewController.m // MadLibs2 #import "JBViewController.h" @interface JBViewController () @end @implementation JBViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)sliderChanged:(id)sender { UISlider *slider = (UISlider *)sender; //why not NSInteger? int numberAsInt = (int) (slider.value + 0.5f); NSString *newText = [[NSString alloc] initWithFormat:@"%d", numberAsInt]; //self is used to access properties /// What is 'text' used for? Is it a method? self.sliderLabel.text = newText; } - (IBAction)toggleShowHide:(id)sender { UISegmentedControl *segmentedControl = (UISegmentedControl *)sender; NSInteger segment = segmentedControl.selectedSegmentIndex; if (segment == 0) // self is used to access properties [self.settingsView setHidden:YES]; else [self.settingsView setHidden:NO]; } - (IBAction)stepperChanged:(id)sender { // update petsLabel to increase or decrease value UIStepper *stepper = (UIStepper *) sender; //NSLog([NSString stringWithFormat:@"%d",(int)stepper.value]); int stepperNum = (int)stepper.value; NSString *numPets = [[NSString alloc] initWithFormat:@"%d", stepperNum]; self.petsLabel.text = numPets; } - (IBAction)createStory:(id)sender { } @end 

你应该selectbutton并查看“连接检查器”,参考应该出现在那里。

这只发生在从.h文件中删除IBOutlet ,而不是在故事板中。

如果在运行程序时仍然可以看到IBOutlet ,则很可能是您没有将其从故事板中删除。

也许你的一些IBOutlet没有标题,文本或者颜色,你认为你已经删除了它们,但是它们(或者其中的一个导致问题的)仍然存在。

添加截图:

例如:

我在这里有一个分段的控件和一个button,这是不可见的,因为它没有标题,文本和背景颜色:

在这里输入图像说明

但是,当我通过从左上angular到右下angular拖动鼠标光标来突出显示时,button实际上仍然存在。

在这里输入图像说明

如果我不小心点击它,同时认为我删除了它(以及.h中的连接和操作),我会得到错误。

右键单击故事板中的UIButton – 您将看到当前设置的所有操作的列表。 点击靠近“hi”动作的小“x”并将其移除。