2014-04-25 29 views
6

ho un problema di questo tipo:aggiunta di una vista personalizzata a una vista di avviso

Voglio mostrare una vista personalizzata all'interno di una vista di avviso. quindi creo un file xib separato e ho progettato la mia interfaccia.e l'ho implementata anche per la classe.ma quando applico sotto il codice, mi dà un errore.

Questo è il codice:

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

e questo è il mio errore:

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

ho davvero una novità per iOS development.did faccio questo torto? dov'è l'errore? non so cosa stia parlando di questo file Nib "loadNibNamed: @bla boa" ho appena dato il mio nome xib per quello. qualcuno può darmi un modo migliore per farlo o puoi dirmi dove devo cambiare per risolvere questo problema?

per favore guidami qualcuno .. grazie.

+1

, Ieri ho già detto nella mia risposta che il suo non è un problema di UIAlertView.In registrare la console sua chiaramente detto che c'è qualche problema nella vostra viewcontroller.So modificare la domanda non .Il suo un problema di UIAlertView. – Jayaprada

+0

signore, ho seguito quello che hai detto ieri. ma non ha funzionato. quindi seguo questo https://github.com/wimagguc/ios-custom-alertview. in qualche modo sono in grado di aggiungere segni di stelle alla vista personalizzata di avviso. ma non riesco ad aggiungere altri campi di testo e i lablals mi puoi suggerire in un modo – Darshana

+0

L'ho creato su github. Scarica questo e fammi sapere per quanto riguarda il tuo problema su UIAlertView. https://github.com/jayaprada-behera/CustomAlertView. Ma il problema sopra menzionato non è relativo a UIAlertView – Jayaprada

risposta

3

per tutti coloro che avendo questo problema, ho seguito this link..and per i segni stella, ho usato this ..

tutto quello che dovete fare è aggiungere qui sotto file al progetto

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

e mettere sotto il codice in cui si desidera far apparire la visualizzazione degli avvisi

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

e all'interno del metodo di createDemoView, è necessario implementare il vista personalizzata.nel mio caso è come questo

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; 

quindi la mia uscita è così. usalo e divertiti :)

grazie per tutti quelli che mi hanno aiutato.

enter image description here

3

In a Alert-view nativo in ios7 che non è possibile aggiungere Visualizzazione personalizzata come sotto-vista di alert-view. Puoi usare ios-custom-alertview per fare questo tipo di attività che puoi fare quello che vuoi. Spero che questo ti sia d'aiuto.

Sto usando questo ios-custom-alertview con l'aggiunta di due file Bellow nel mio progetto.

CustomIOS7AlertView.h 
CustomIOS7AlertView.m 

e come utilizzare c'è quick-start-guide