Ios 向警报视图添加自定义视图
我有这样一个问题: 我想在警报视图中显示自定义视图。因此,我创建了一个单独的xib文件并设计了我的接口。并为它实现了类。但是当我应用下面的代码时,它给了我一个错误 代码如下:Ios 向警报视图添加自定义视图,ios,uialertview,xib,addsubview,sdcalertview,Ios,Uialertview,Xib,Addsubview,Sdcalertview,我有这样一个问题: 我想在警报视图中显示自定义视图。因此,我创建了一个单独的xib文件并设计了我的接口。并为它实现了类。但是当我应用下面的代码时,它给了我一个错误 代码如下: UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Confirm your Action" message:@"Click OK to confirm"
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>'
由于未捕获的异常“UIViewControllerHierarchyInconsistency”而终止应用程序,原因:“子视图控制器:应具有父视图控制器:但实际父视图控制器为:”
我对iOS开发很陌生。我做错了吗?错在哪里?我不知道这个Nib文件在这里说什么“loadNibNamed:@bla-boa”我只是给了我的xib名字。有谁能给我一个更好的方法来解决这个问题,或者你能告诉我在哪里我必须改变来解决这个问题吗
请给我引路。。
谢谢。在ios7的本机
警报视图
中,无法将自定义视图添加为警报视图
的子视图。你可以用它来完成这类任务,你可以随心所欲。希望这对你有帮助
我正在使用此ios自定义alertview
,在我的项目中添加两个以下文件
CustomIOS7AlertView.h
CustomIOS7AlertView.m
还有如何使用它
这个API为您的问题提供了解决方案,请使用它并从中获得乐趣
对于所有有这个问题的人, 我跟随了林克,而对于星号,我用了 您所要做的就是将以下文件添加到项目中
- CustomIOS7AlertView.h
- CustomIOS7AlertView.m
- JSFavStarControl.h
- JSFavStarControl.m
// 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方法中,您必须实现自定义视图
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;
所以我的输出是这样的。
使用它并享受乐趣:)
谢谢所有帮助我的人
,昨天我在回答中已经告诉您,这不是UIAlertView的问题。在您的控制台日志中,它清楚地提到了viewcontroller中存在一些问题。因此,请更改您的问题。这不是UIAlertView的问题。先生,我已经按照您昨天所说的进行了说明。但是没有起作用。所以我遵循这个。不知何故,我能够将星号添加到警报自定义视图中。但是无法添加其他文本字段和标签。您能否建议我在github上创建它的方法。请下载此文件,并在UIAlertView上告知您的问题。但是您提到的上述问题与UIAlertViews无关。一种方法是在视图控制器中设计自己的视图,然后以模块方式加载它。