How to add a UIActivityIndicatorView inside a AlertView - ios

I would like to show an alertview saying the process is in progress and would like to add the UIActivityIndicatorView inside the alertview to show the process is in progress, instead of outside the alertview. How do I do that? Any guidance will be helpful.

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#" "Process in Progress..." " ];
UIActivityIndicatorView *progress= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 50, 30, 30)];
progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
[alert addSubview:progress];
[progress startAnimating];
[alert show];

I would rather suggest you to use MBProgressHud
and if u need to show some image and text then, use this

Related

adding a custom view to a alert view

i have a problem like this:
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.
this is the 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];
and this is my error :
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 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.
This API has solution for your problem use this and have fun
https://github.com/Darktt/DTAlertView
https://github.com/Scott90/SDCAlertView
https://github.com/lmcd/LMAlertView
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
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];
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.
In to native Alert-view in ios7 that not possible to adding custom View as a sub-view of alert-view. You can use ios-custom-alertview for doing this kind of task you can do what you want. Hope this helpful to you.
I am using this ios-custom-alertview with Adding two Bellow file in to my project.
CustomIOS7AlertView.h
CustomIOS7AlertView.m
and how to use there is quick-start-guide

iOS multiple text fields on a UIAlertview In IOS 7

So the new iOS 7 has come out and I'm trying to add multiple textFields and labels to the UIAlertviews. I need three. I've been trying to add them as subviews and that doesn't work anymore. I have also tried to add multiple lines with the UIAlertViewStylePlainTextInput but it only seems to return one text field.
I need to add in labels to show them what to enter as well. Is there a way to accomplish this task with the new iOS 7?
The only solution i found using UIAlertView with more than one text field in iOS7 is for login only.
use this line to initialize your alertView
[alert setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
and this to grab the users input:
user = [alert textFieldAtIndex:0].text;
pw = [alert textFieldAtIndex:1].text
For other purposes than login view the other threads like this on: UIAlertView addSubview in iOS7
You can change accessoryView to any own customContentView in a standard alert view in iOS7
[alertView setValue:customContentView forKey:#"accessoryView"];
Note that you must call this before [alertView show].
Simplest illustrating example:
UIAlertView *av = [[UIAlertView alloc] initWithTitle:#"TEST" message:#"subview" delegate:nil cancelButtonTitle:#"NO" otherButtonTitles:#"YES", nil];
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
v.backgroundColor = [UIColor yellowColor];
[av setValue:v forKey:#"accessoryView"];
[av show];
If you want to add just two textfields to your UIAlertView, you can use UIAlertViewStyleLoginAndPasswordInput and modify the textfields as follows:
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:#"Some Title" message:#"Some Message." delegate:self cancelButtonTitle:#"Okay" otherButtonTitles:#"No, thanks", nil];
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
[alert textFieldAtIndex:1].secureTextEntry = NO; //Will disable secure text entry for second textfield.
[alert textFieldAtIndex:0].placeholder = #"First Placeholder"; //Will replace "Username"
[alert textFieldAtIndex:1].placeholder = #"Second Placeholder"; //Will replace "Password"
[alert show];
Afterwards, in the UIAlertView delegate, you can simply get the text using:
text1 = [alert textFieldAtIndex:0].text;
text2 = [alert textFieldAtIndex:1].text;

Alert view shifted upwards due to the addition of Text field in it

I am creating an Alert view on click of a button. I have placed a UITextfield in it. But the Alertview is shifted upwards in the screen. I am not able to bring it back at the center of the screen.
Here is my code and Screenshot.
and the code for creating this Alert view is this:-
- (IBAction)btn_cancelAppointment_click:(id)sender
{
// Here We are Creating Alertview which asks for
UIAlertView* cancelAlert = [[UIAlertView alloc] init];
[cancelAlert setDelegate:self];
[cancelAlert setTitle:#"Are you sure you want to request cancellation of this appointment?"];
[cancelAlert setMessage:#" "];
[cancelAlert addButtonWithTitle:#"NO"];
[cancelAlert addButtonWithTitle:#"YES"];
UITextField * txt_cancelNote = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 88.0, 245.0, 30.0)];
[txt_cancelNote setBackgroundColor:[UIColor whiteColor]];
[txt_cancelNote setBorderStyle:UITextBorderStyleRoundedRect];
[txt_cancelNote setPlaceholder:#"Enter cancellation note"];
txt_cancelNote.tag = 11;
[cancelAlert addSubview:txt_cancelNote];
cancelAlert.delegate = self;
[cancelAlert show];
}
So, if somebody can tell me how to bring it back to the center of the screen. Any help will be highly appreciated.
Give a try by setting the transform property of the UIAlertView
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:#"Test" message:nil delegate:self cancelButtonTitle:#"OK" otherButtonTitles: nil];
alertView.transform = CGAffineTransformMakeTranslation(x, y);

iOS UISlider in UIAlertView

I know that there has been one question about this but it is not clear to me. I want to add a UISlider to UIAlertView. In the UIAlertView, I also add one UILabel to show the value of UISlider. What I have been done so far is:
UIAlertView *alert= [[UIAlertView alloc]
initWithTitle: #"Set delay"
message: #" "
delegate: nil
cancelButtonTitle:#"OK"
otherButtonTitles:nil];
UISlider *mySlider=[[UISlider alloc] initWithFrame:CGRectMake(20, 50, 200, 20)];
mySlider.maximumValue=10.00;
mySlider.minimumValue=1.00;
UILabel *myLabel=[[UILabel alloc] initWithFrame:CGRectMake(220, 50, 50, 40)];
int x=.........;//x should get value of mySlider
[myLabel setText:[NSString stringWithFormat:#"%d",x]];
[alert addSubview:myLabel];
[alert addSubview:mySlider];
[alert show];
[alert release];
so I want variable x to get value of mySlider and the myLabel will show the value of x. I get stuck at this point. Any suggestion is really appreciated.
Here what you need to do:
Make the UILabel global, that mean declare it on the header file (this is to reach the label easily).
Then add a target to the slider, with ValueChanged event.
[mySlider addTarget:self action:#selector(sliderHandler:) forControlEvents:UIControlEventValueChanged];
next, implement the sliderHandler method:
- (void) sliderHandler: (UISlider *)sender {
int x = sender.value;
[myLabel setText:[NSString stringWithFormat:#"value = %d",x]];
}
That will work with you.

Cocoa touch : Multiple line text input

In my UIViewController <GLKViewDelegate> in need to make a simple text input when selecting a object.
Is there in UIKit a simple multiline text input popup ready to use ?
I already found UIAlertView with alertViewStyle=UIAlertViewStylePlainTextInput but it's only a simple line input.
thx
If you mean is there an equivalent of the text input UIAlertView with a UITextView rather than a UITextField, the answer is no.
Your question is not very clear. but I think UIActionSheet is what you need.
Edit
You can try this out
Set this in un .h file the the delegate like this
#interface NameOfYourClass : UIViewController <UIActionSheetDelegate>
And add this code in un .m File
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:#"Action Sheet" delegate:self cancelButtonTitle:#"Cancel Button" destructiveButtonTitle:#"Destructive Button" otherButtonTitles:#"Other Button 1", #"Other Button 2", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[actionSheet showInView:self.view];
Edit2
So here's what to do to add a textfield to your allertview
UIAlertView *newAlert =[[UIAlertView alloc] initWithTitle:#"ADD item" message:#"Put it blank textfield will cover this" delegate:self cancelButtonTitle:#"Cancel" otherButtonTitles:#"OK", nil];
UITextField *newTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
newTextField.text=#"";
[newTextField setBackgroundColor:[UIColor whiteColor]];
[newTextField setKeyboardAppearance:UIKeyboardAppearanceAlert];
[newTextField setAutocorrectionType:UITextAutocorrectionTypeNo];
[newTextField setTextAlignment:UITextAlignmentCenter];
[newAlert addSubview:newTextField];
[newAlert show];

Resources