将自定义视图添加到警报视图 [英] adding a custom view to a alert view

查看:198
本文介绍了将自定义视图添加到警报视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的问题:

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

i want to show a customized view inside a alert view. so i create a separate xib file and designed my interface.and implemented the class for it too.but when i apply below code,it gives me an error.

这是代码:

 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 i这样做错了吗?哪里出错了?我不知道这个Nib文件在这里说什么loadNibNamed:@bla boa我只是给了我的xib名称。任何人都可以给我一个更好的方法来做到这一点,或者你能告诉我在哪里需要改变以解决这个问题?

i really new to iOS development.did i do this wrong ? where is the mistake ? i don't know what is this Nib file talking here "loadNibNamed:@bla boa " i just gave my xib name for that. can anyone give me a better way to do this or can you tell me the where i have to change to fix this issue ?

请指导我一些..
谢谢。

please guide me some one.. thank you.

推荐答案

对于遇到此问题的所有人,
i已关注链接......对于星标,我使用了这个 ..

for all who having this problem, i have followed this link..and for the star marks, i used this..

您所要做的就是将以下文件添加到项目中

all you have to do is add below files to the project


  • CustomIOS7AlertView.h

  • CustomIOS7AlertView.m

  • JSFavStarControl.h

  • JSFavStarControl.m

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

并将代码放在您想要弹出警报视图的代码下面

and put below code where you want to pop up the alert view

// 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的方法中,你必须实现你的自定义视图。在我的情况下它就像这个

and inside the method of createDemoView,you have to implement your customised view.in my case it is like this

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;

所以我的输出是这样的。
使用它并享受乐趣:)

so my output is like this. use it and have fun :)

感谢所有帮助过我的人。

thank you for everyone who helped me.

< img src =https://i.stack.imgur.com/E26Ko.jpgalt =在此处输入图像说明>

这篇关于将自定义视图添加到警报视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆