将自定义视图添加到警报视图

我有这样的问题:

我想在一个警报视图中显示一个自定义的视图。 所以我创build了一个单独的xib文件,并devise了我的界面,并为它实现了类。但是当我应用下面的代码时,它给了我一个错误。

这是代码:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Confirm your Action" message:@"Click OK to confirm" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Cancel",nil]; NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"customDialogViewController" owner:self options:nil]; customDialogViewController *myView = (customDialogViewController*) [subviewArray objectAtIndex:0]; [alert setValue:myView forKey:@"accessoryView"]; //alert.alertViewStyle = UIAlertViewStylePlainTextInput; alert.tag = KAlertViewthree; [alert show]; 

这是我的错误:

 Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<ScheduleView: 0x8adf1a0> should have parent view controller:<_UIModalItemAccessoryViewControllerForLegacyAlert: 0xa888b70> but actual parent is:<UINavigationController: 0x8add8c0>' 

我真的很新的iOS development.did我做错了吗? 错误在哪里? 我不知道这个Nib文件在这里说什么“loadNibNamed:@bla boa”我只是给了我的xib名称。 任何人都可以给我一个更好的方式来做到这一点,或者你可以告诉我,我必须改变,以解决这个问题?

请引导我一下..谢谢。

在ios7中的本地Alert-view中,无法将自定义视图添加为alert-view的子alert-view 。 你可以使用ios-custom-alertview做这种任务,你可以做你想做的事情。 希望这对你有帮助。

我正在使用此ios-custom-alertview将两个贝娄文件添加到我的项目中。

 CustomIOS7AlertView.h CustomIOS7AlertView.m 

以及如何使用有快速入门指南

对于所有谁有这个问题,我已经跟着这个链接..星标,我用这个 ..

你所要做的就是把下面的文件添加到项目中

  • CustomIOS7AlertView.h
  • CustomIOS7AlertView.m
  • JSFavStarControl.h
  • JSFavStarControl.m

并把下面的代码放在你想要popup警报视图的地方

 // Here we need to pass a full frame CustomIOS7AlertView *alertView = [[CustomIOS7AlertView alloc] init]; // Add some custom content to the alert view [alertView setContainerView:[self createDemoView]]; // Modify the parameters [alertView setButtonTitles:[NSMutableArray arrayWithObjects:@"Close1", @"Close2", @"Close3", nil]]; [alertView setDelegate:self]; // You may use a Block, rather than a delegate. [alertView setOnButtonTouchUpInside:^(CustomIOS7AlertView *alertView, int buttonIndex) { NSLog(@"Block: Button at position %d is clicked on alertView %d.", buttonIndex, [alertView tag]); [alertView close]; }]; [alertView setUseMotionEffects:true]; // And launch the dialog [alertView show]; 

并在createDemoView的方法中,你必须实现你的自定义view.in我的情况是这样的

 UIView *demoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 290, 100)]; //alertView.tag=2; UILabel *rateLbl=[[UILabel alloc]initWithFrame:CGRectMake(10, 10, 290, 45)]; rateLbl.backgroundColor=[UIColor clearColor]; rateLbl.font=[UIFont boldSystemFontOfSize:15]; rateLbl.text=@"Rate"; UILabel *cmntLable=[[UILabel alloc]initWithFrame:CGRectMake(10, 45, 290, 45)]; cmntLable.backgroundColor=[UIColor clearColor]; cmntLable.font=[UIFont boldSystemFontOfSize:15]; cmntLable.text=@"Add Comment"; UIImage *dot, *star; dot = [UIImage imageNamed:@"dot.png"]; star = [UIImage imageNamed:@"star.png"]; JSFavStarControl *rating = [[JSFavStarControl alloc] initWithLocation:CGPointMake(150, 20) dotImage:dot starImage:star]; [rating addTarget:self action:@selector(updateRating:) forControlEvents:UIControlEventValueChanged]; UILabel *lblAlertTItle=[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 290, 45)]; lblAlertTItle.backgroundColor=[UIColor clearColor]; lblAlertTItle.textAlignment=UITextAlignmentCenter; lblAlertTItle.font=[UIFont boldSystemFontOfSize:18]; lblAlertTItle.text=@"Choose your sharing option"; UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(150, 57, 100, 25)]; text.backgroundColor=[UIColor whiteColor]; //[demoView addSubview:lblAlertTItle]; [demoView addSubview:text]; [demoView addSubview:rating]; [demoView addSubview:rateLbl]; [demoView addSubview:cmntLable]; return demoView; 

所以我的输出是这样的。 使用它,玩得开心:)

感谢所有帮助过我的人。

在这里输入图像说明