您好,下午好,我在这里遇到一些问题,说实话,我不明白 我必须使用不同的消息为同一个屏幕创建不同的alertViews,这些警报中的大多数只有1个按钮,但是这个要删除的需要2个按钮,事情就是这样,因为其他人只有1个按钮,当我创建时2按钮screenview和我添加了(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex方法,我有一些问题
这里的一些代码
- (IBAction)saveInfo{
if (med.text.length ==0) {
UIAlertView *alertViewError = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ERROR",@"")
message:NSLocalizedString(@"EMPTY1",@"")
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alertViewError show];
[alertViewError release];
}
else if(medicamento.text.length >= 41){
[self lenghtError:40:NSLocalizedString(@"TF_MED",@"")];
}
else if (med.text.length ==0 || descripcion.text.length == 0) {
UIAlertView *alertViewError = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ERROR",@"")
message:NSLocalizedString(@"EMPTY2",@"")
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alertViewError show];
[alertViewError release];
}
else if (descripcion.text.length >= 41){
[self lenghtError:40:NSLocalizedString(@"TF_DESCRIPCION",@"")];
}
else{
[self insertDictionary];
UIAlertView *alertViewAcept = [[UIAlertView alloc] initWithTitle:@""
message: NSLocalizedString(@"ACCEPT_MSG",@"")
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alertViewAcept show];
[alertViewAcept release];
[self.navigationController popViewControllerAnimated:YES];
}
}
- (IBAction)cancelData{
UIAlertView *alertViewCancel =
[[UIAlertView alloc] initWithTitle: NSLocalizedString(@"BT_DELETE_MED",@"")
message: NSLocalizedString(@"MSG_DELETE_MED",@"")
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: @"Cancel", nil];
[alertViewCancel setTag:999];
[alertViewCancel show];
[alertViewCancel release];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView.tag == 999) {
if(buttonIndex==0){
[self.Bayer_DB_obj deleteRowWithKeyValue:[NSString stringWithFormat:@"%d",IdMed] onKeyName:@"id_ctl_med" onTable:@"ctl_med"];
// code to delete here
[self.navigationController popViewControllerAnimated:YES];
}
}
}
所以,在第一部分中,我创建了一些警告来指示用户他/她犯了错误,在第二部分中,我需要在删除之前进行确认,但是在这里,我需要2个按钮,然后,第三部分,我有被调用的方法,我在警报中添加了一个标记,以避免在所有警报中进行这种比较,问题是,当你显示alertViewAcept时,它会带你到前一个视图控制器,单击确定按钮(实际上是取消按钮)后,应用程序崩溃,没有任何“错误消息”
所以我不确定我做错了什么,请帮忙
答案 0 :(得分:1)
我的猜测问题是你设置了alertViewAcept的委托,并在你显示警告后立即弹出viewController,这样你的委托就会被释放,一旦警报按钮就会出错单击视图。
你应该这样做:
UIAlertView *alertViewAcept = [[UIAlertView alloc] initWithTitle:@""
message: NSLocalizedString(@"ACCEPT_MSG",@"")
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
更好的是,只有OK按钮的所有警报都不需要委托。在这种情况下,您甚至不需要标签。