So I'm making a photo editing app for school from last semesters project. When a user clicks the back button (in editor mode) which in my case is called "Product Selection" I'd like to have a pop-up come up and say "Do you want to delete everything and go back to product selection?" to see if they want to discard their work, and if the user selects yes, the entire project is discarded and they are put back in the lobby.
Where do I put this code to do this? I found the "Product Selection" button in the min story board but not sure what to do from there.
The code for the pop-up I was going to use is:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Notification"
message:#"Do you want to delete everything and go back to product selection?" delegate:self cancelButtonTitle:#"No" otherButtonTitles:#"Yes"];
[alert show];
[alert release]
Any help/wisdom would be extremely appreciated!
I would create a "Cancel" UIBarButton which executes a custom function:
- (void)cancelTapped {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Notification" message:#"Do you want to delete everything and go back to product selection?" delegate:self cancelButtonTitle:#"No" otherButtonTitles:#"Yes"];
[alert setTag:1];
[alert show];
}
And listens for the alert to return on:
- alertView:didDismissWithButtonIndex:
From there, I would write the logic to hide the page and pop the view.
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (alertView.tag == 1 && buttonIndex == 1) {
// Delete data and return to lobby
[self.navigationController popViewControllerAnimated:YES];
}
}
Use this delegate method (don't forget adding UIAlertViewDelegate on your .h):
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Notification" message:#"Do you want to delete everything and go back to product selection?" delegate:self cancelButtonTitle:#"No" otherButtonTitles:#"Yes"];
alert.cancelButtonIndex = 0;
[alert show];
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
// If user confirmed:
if (buttonIndex != 0) {
// Do what you need.
}
}
Related
I got a button that leads to a tableViewController.
I created UIAlertView that gets triggered when the resultArray is null, which also means there is nothing to show on tableView but when user clicks ok, nothing changes and it goes to empty tableView.
How can I stop going into the other view controller?
this is my code
if (refilteredArray.count==0) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"No result"
message:#"Please enter a different combination."
delegate:nil
cancelButtonTitle:#"OK"
otherButtonTitles:nil];
[alert show];
}
The segue is not triggered with code, its a button triggered IBAction
- (IBAction)motorButton:(id)sender {
...
}
you can use following method
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
in the method body you can verify if your array is empty or not and if it is return NO. To be more specyfic you should check your segue identifier (remember to add it to your segue in IB first)
You need to go for if.. else block
if (refilteredArray.count==0) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"No result"
message:#"Please enter a different combination."
delegate:nil
cancelButtonTitle:#"OK"
otherButtonTitles:nil];
[alert show];
}else{
[self performSegueWithIdentifier:#"yourSegue" sender:sender];
}
For more info, check this link about segue
I need some kind of easy way to be able to edit a title when a button is pressed. I would basically just redirect to a view controller with the edit possibility included but that just seems to "heavy". It would be far better to just be able to edit text in a pop up box or something. Is this possible and if so how would I do this?
You can use an UIAlertview control to update your title.
In your button click put the following code.For example
-(IBAction)ButtonClick:(id)sender{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Title" message:#"Message" delegate:self cancelButtonTitle:#"Done" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
[alert release];
}
In the UIAlertViewDelegate method
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if(buttonIndex == alertView.cancelButtonIndex)
NSLog(#"%#", [alertView textFieldAtIndex:0].text);
}
I hope this will help you.
Please note the alert.alertViewStyle = UIAlertViewStylePlainTextInput only works in iOS 5.0 and later.
I'm working on a losing screen and I'd like to let users view their game before showing the stats screen. I've decided to use an alert to show users the current screen. After they hit OK, they should be taken to the stats screen.
The problem is, the stat screen pops up at the same time as the alert. How can I make sure the stats screen opens after the user closes the alert?
if ([self.model userHasLost]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Sorry!" message:#"You lost..." delegate:nil cancelButtonTitle:#"OK" otherButtonTitles:nil];
[alert show];
[self _showGameEndScreenWitnWin:NO]; //Stats screen should open after alert is closed
}
You need to use delegate method of UIAlertView and also need to set delegate of UIAlertView = self,
Following is delegate method
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
check buttonIndex in this method it's give you NSInteger and manage click of button.
For more information read this UIAlertView Delegates.
You need to set the alert view delegate. In this example self will conform to the UIAlertViewDelegate protocol.
if ([self.model userHasLost]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Sorry!" message:#"You lost..." delegate:nil cancelButtonTitle:#"OK" otherButtonTitles:nil];
alert.delegate = self;
[alert show];
}
You can then listen to a delegate method for when the alert view is dismissed :
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
[self _showGameEndScreenWitnWin:NO]; //Stats screen should open after alert is closed
}
For this situation need to use delegate method,
For simple Example Refer Here: http://www.idev101.com/code/User_Interface/UIAlertView.html
I'm hoping someone can help me figure this out...I'm a beginner Xcode / Objective-C programmer. I'm working on a app that is a continuation of last semester.
1: So I created a button and I need it to execute this custom function:
- (void)cancelTapped {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Notification" message:#"Do you want to delete everything and go back to product selection?" delegate:self cancelButtonTitle:#"No" otherButtonTitles:#"Yes"];
[alert setTag:1];
[alert show];
}
How/where do I put this function? Is it in the button properties? Or would I write this in a custom class/controller and link it to it?
2: How do I get it to listen for the alert to return on: - alertView:didDismissWithButtonIndex:
3: From there, how would I would write the logic to hide the page and pop the view?
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (alertView.tag == 1 && buttonIndex == 1) {
// Delete data and return to lobby
[self.navigationController popViewControllerAnimated:YES];
}
}
You will need a custom UIViewController to house the logic for your button and alert view interactions. I am assuming you know how to do that.
Once done, assuming you have a reference to your button property in your view controller, you can programatically add a target to your button and pass the selector cancelTapped as a parameter:
[myButton addTarget:self action:#selector(cancelTapped) forControlEvents:UIControlEventTouchUpInside];
Alternatively you could control-drag from the button in your Storyboard to the header file of your custom UIViewController, and define an IBAction. That will create an empty cancelTapped method in your implementation which you could then add your logic in.
As for listening on UIAlertView messages, you will need to make your custom UIViewController a delegate of the UIAlertView by passing "self" as the delegate in the following statement:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Notification" message:#"My Message" delegate:self cancelButtonTitle:#"No" otherButtonTitles:#"Yes"];
Your CustomViewController should also be declared as a UIAlertViewDelegate.
CustomViewController.h
#interface CustomViewController : UIViewController<UIAlertViewDelegate>
#end
Hope this helps!
By the using VIewWillDisappear method to detect the press of The back button of NavigationItem:
-(void) viewWillDisappear:(BOOL)animated {
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
// Navigation button was pressed. Do some stuff
[self cancelTapped];
}
[super viewWillDisappear:animated];
}
- (void)cancelTapped {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Notification" message:#"Do you want to delete everything and go back to product selection?" delegate:self cancelButtonTitle:#"No" otherButtonTitles:#"Yes"];
[alert setTag:1];
[alert show];
}
For More info && also Custom UIBArButtonItem Check Here
can i display another UIAlertview after dismissed by timer? i use this method UIActivityindicatorview into UIAlertView with NSTimer to dismiss it self "please wait, Saving..." dismissed, then i want to view another UIAlertView say "Saved Successfully!" (Done). how to achieve this? thank you.
here i was use same this method but this not what i'm need. i just need view another UIAlertview after the first uialertview dismissed by timer.
please tell me if need more clear i can post my code here thanks.
- (IBAction)showAlert:(id)sender {
UIAlertView* alert_view = [[UIAlertView alloc]
initWithTitle: #"Save" message:#"please wait, saving..." delegate: self
cancelButtonTitle:#"done" otherButtonTitles:nil];
[alert_view show];
[alert_view release];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex==0) {
UIAlertView* alert_view = [[UIAlertView alloc]
initWithTitle: #"Success" message:#"Saved Successfully!" delegate: self
cancelButtonTitle: #"Done" otherButtonTitles:nil];
[alertView dismissWithClickedButtonIndex:0 animated:TRUE];
}
else{
[alertView dismissWithClickedButtonIndex:1 animated:TRUE];
}
}
A timer is not the way to go about this. You are faking it instead of implementing it properly. You need to use protocols and delegates if you have multiple classes involved, but ultimately, you need to follow this flow:
1) Show a "Please wait...Saving" alert
2) Do the saving
3) When saving has completed, dismiss first alert, and show second.
Depending on HOW your are saving WHAT, this may need some extra logic to implement, but without more specifics, it's hard to help much more.