2014-04-25 10 views
6

Zugabe habe ich ein Problem wie folgt aus:eine benutzerdefinierte Ansicht auf eine Warnungsansicht

i eine benutzerdefinierte Ansicht in einer Alarmansicht angezeigt werden sollen. also erstelle ich eine separate XIB-Datei und entwerfe meine Schnittstelle. Und habe die Klasse auch dafür implementiert. Aber wenn ich den untenstehenden Code anwende, gibt es mir einen Fehler.

Dies ist der Code:

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]; 

und das ist mein Fehler:

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>' 

i auf iOS wirklich neu development.did ich tun das falsch? Wo ist der Fehler? Ich weiß nicht, worüber diese Nib-Datei hier spricht "loadNibNamed: @bla boa" Ich habe meinen Xib-Namen dafür angegeben. kann jemand mir einen besseren Weg geben, dies zu tun, oder können Sie mir sagen, wo ich mich ändern muss, um dieses Problem zu beheben?

bitte führe mir einen .. danke.

+1

, Gestern habe ich Ihnen schon gesagt, in meiner Antwort, dass es nicht ein Problem der UIAlertView.In Konsole seines deutlich erwähnt einzuloggen, dass einige Probleme dort in Ihrem viewcontroller.So ist Ihre Frage .Seine nicht ändern Problem von UIAlertView. – Jayaprada

+0

Herr, ich habe gefolgt, was Sie gestern gesagt haben. aber hat nicht funktioniert. also folge ich dieser https://github.com/wimagguc/ios-custom-alertview. irgendwie kann ich der benutzerdefinierten Ansichtswarnung Sternmarkierungen hinzufügen. aber kann keine weiteren Textfelder und lablals hinzufügen können Sie mir einen Weg vorschlagen – Darshana

+0

Ich habe es auf github.DOwnload erstellt und lassen Sie mich in Bezug auf Ihr Problem auf UIAlertView wissen. https://github.com/jayaprada-bahera/CustomAlertView. Aber das oben erwähnte Problem, das Sie erwähnten, ist nicht mit UIAlertView verbunden – Jayaprada

Antwort

3

für alle, die dieses Problem haben, ich habe this link..and für die Sternzeichen gefolgt, i this verwendet ..

alles, was Sie tun müssen, ist unten hinzufügen Dateien zum Projekt

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

und unter Code zu setzen, wo Sie die Warnungsansicht

// 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]; 

und innerhalb der Methode von createDemoView Pop-up wollen, müssen Sie Ihre implementieren angepasste Ansichtin meinem Fall ist es so

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]; 
[email protected]"Rate"; 

UILabel *cmntLable=[[UILabel alloc]initWithFrame:CGRectMake(10, 45, 290, 45)]; 
cmntLable.backgroundColor=[UIColor clearColor]; 
cmntLable.font=[UIFont boldSystemFontOfSize:15]; 
[email protected]"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]; 
[email protected]"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 meine Ausgabe ist so. benutze es und habe Spaß :)

danke für alle, die mir geholfen haben.

enter image description here

3

In native Alert-view in ios7, die nicht möglich ist, benutzerdefinierte Ansicht als Unteransicht von alert-view hinzuzufügen. Sie können ios-custom-alertview für diese Art von Aufgabe verwenden, die Sie tun können, was Sie wollen. Hoffe das hilfreich für Sie.

Ich verwende diese ios-custom-alertview mit Hinzufügen von zwei Bellow-Datei zu meinem Projekt.

CustomIOS7AlertView.h 
CustomIOS7AlertView.m 

und wie dort zu verwenden, ist quick-start-guide

Verwandte Themen