我有一个IBAction方法,当按下一个按钮时会调用它。但是当调用UIViewController时,在viewdidload之前首先调用IBAction方法。我检查了我的代码,没有任何地方我特别称之为IBAction方法。
在viewdidload之前调用方法的原因是什么?为什么会这样?
谢谢。 .H
@interface VC_PatientInfo : M_SwipeInterface
的.m
@implementation VC_PatientInfo
static M_PatientRow* patient;
NSMutableArray*activeDrugList;
NSInteger orderId;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
+(NSInteger)getOrderId{
return orderId;
}
+(void)setOrderId:(NSInteger)oId{
orderId=oId;
}
- (void)viewDidLoad
{
orderId=0;
[super viewDidLoad];
patient= [VC_PatientList getPatient];
activeDrugList = [[NSMutableArray alloc]init];
activeDrugList=[DAO_GetPatientActiveDrugs drug:[VC_Login getGuid] visit_id:[VC_PatientList getPatient].visit_id];
if([VC_Login is_from_monitoring]){
[DAO_InsertMonitoriingList patient:[VC_Login getGuid] pId:[self.pId_lbl.text integerValue]];
[self.txt_monitoring setText:@"Takip Listemden Çıkar"];
self.txt_monitoring.textColor= [UIColor redColor];
}
// Do any additional setup after loading the view.
}
+(NSMutableArray*)refreshActiveDrugs{
activeDrugList=[DAO_GetPatientActiveDrugs drug:[VC_Login getGuid] visit_id:[VC_PatientList getPatient].visit_id];
return activeDrugList;
}
+(NSMutableArray*)getActiveDrugList{
return activeDrugList;
}
- (IBAction)call_DrugOrder:(id)sender {
[Global setVC:@"vc_drugorder"];
[self callVC];
}
- (IBAction)setMonitoringList:(id)sender {
if([self.txt_monitoring.text isEqualToString:@"text1"]){
[DAO_InsertMonitoriingList patient:[VC_Login getGuid] pId:[self.pId_lbl.text integerValue]];
[self.txt_monitoring setText:@"text2"];
self.txt_monitoring.textColor= [UIColor redColor];
}else{
[DAO_RemoveMonitoriingList patient:[VC_Login getGuid] pId:[self.pId_lbl.text integerValue]];
[self.txt_monitoring setText:@"text1"];
self.txt_monitoring.textColor= [Global colorWithHexString:@"99CC00"];
}
}
- (IBAction)setViewSecret:(id)sender {
if(self.viewSecret.frame.size.height==143 )
[self.viewSecret setFrame:CGRectMake(self.viewSecret.frame.origin.x,
self.viewSecret.frame.origin.y,
self.viewSecret.frame.size.width,
0)];
else
[self.viewSecret setFrame:CGRectMake(self.viewSecret.frame.origin.x,
self.viewSecret.frame.origin.y,
self.viewSecret.frame.size.width,
143)];
}
- (IBAction)goBack:(id)sender {
[self dismissViewControllerAnimated:NO completion:nil];
}
- (IBAction)callAllergyVC:(id)sender {
[Global setVC:@"vc_patientallergy"];
[self callVC];
}
- (IBAction)callDiagnosisVC:(id)sender {
[Global setVC:@"vc_patientdiagnosis"];
[self callVC];
}
- (IBAction)callVCOldOrder:(id)sender {
[Global setVC:@"vc_oldorder"];
[self callVC];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
答案 0 :(得分:4)
有些事情你可以检查,试图解决这个问题:
转到方法的实现,并在其中的代码行上插入插入符号。在主窗口的左上角没有单击带有黑色和灰色矩形的小按钮(箭头左侧)并检查您的caode中是否有人调用此方法。
你不会在这里看到插座 - 所以如果Callers
选项是灰色的(如下图所示) - 你很好。
尝试在方法实现的第一行放置断点。当断点停止编码时,在导航器窗格中的左侧,在调试器下面,您可以看到方法调用其他方法来调用方法的确切顺序。大多数机会你只需要退后一步(只需点击该行就可以看到它发生的位置 - 顺便说一下,这有点像时间机器(或范围机器?),你可以看到它的状态是什么范围内的对象。)
在点击该小灰色圆圈时,转到定义插座的位置(在.h
或.m
文件中)。这将显示与该方法/属性的所有 outlet 连接(在下图中我单击了一个属性,但方法的开头将是相同的。)
打开NIB / Storyboard文件,然后单击View Controller本身(左侧文档大纲链中的顶部项目,另一个选项是Ctrl
+ Shift
+ Mouse Click
查看IB中的控制器,然后从下拉菜单中选择View Controller。
现在在右侧(在“工具”窗格中)转到“连接检查器”(最右边的一个),以查看视图控制器中所有内容的所有连接。检查方法以查看是否有任何连接不应该是。