Integrate with Chartboost objective-c - ios

I've successfully integrated Chartboost rewarded video, it works but i want to implement the code that will increase credits when a user has completely watched a rewarded video. I've tried to implement in app delegate and it works calling it but due to some internal functions i will need to implement in specific view controller. so when i put the same code
-(void)didCompleteRewardedVideo:(CBLocation)location
withReward:(int)reward {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Really reset?" message:#"hi ?" delegate:self cancelButtonTitle:#"Cancel" otherButtonTitles:nil];
// optional - add more buttons:
[alert addButtonWithTitle:#"Yes"];
[alert show];
}
the alert view will not appear if i implement this code in specific view controller instead of appdelegate. i assume it is not called in view controller since it has no response. i need help to implement in view controller

In order to make UI changes, you should call it on main queue.
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:#"Really reset?" message:#"hi ?" delegate:self cancelButtonTitle:#"Cancel" otherButtonTitles:nil];
// optional - add more buttons:
[alert addButtonWithTitle:#"Yes"];
[alert show];
});
Or you can just pass the delegate of the view and show the alert on it.
-(void) DisplayMessage:(NSString*)message withDelegate:(id)delegate
{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:#"Title"
message:message delegate:delegate
cancelButtonTitle:nil
otherButtonTitles:#"Ok", nil];
[alert show];
}

Related

How do i stop/cancel the segue when UIAlertView triggered

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

CPU usage boosting to 190% when using UIAlertView on main thread and Unable to cancel the alert view

I have a method called errorHandle which gives the alert view and I am calling this method in the #try block
-(void) errorHandle {
UIAlertView *disp = [[UIAlertView alloc] initWithTitle:#"Invalid QR Code" message:nil delegate:nil cancelButtonTitle:#"OK" otherButtonTitles:nil];
[disp show];
//[disp dismissWithClickedButtonIndex:0 animated:YES];
}
#try{
dispatch_async(dispatch_get_main_queue(), ^{
[self errorHandle];
});
}
Here I am getting the alert view but when I tap on the cancel button,the alert view is dismissing and appearing back again . I could not dismiss the alert view with single tap but after tapping several times the alert view is dismissed but the CPU usage during the operation boosted to 190%.
After the alert view is dismissed ,I again tried to get the alert view again I have to tap the cancel button several times. Is there anyway to dismiss the alert view properly on main thread and make it not to appear again?
I tried the following code but it didn't work out for me
1)
UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:#"Event" message:#"Event added in calendar" delegate:self cancelButtonTitle:#"ok" otherButtonTitles:nil];
[alertview performSelectorOnMainThread:#selector(show) withObject:nil waitUntilDone:YES];
2)
__block UIAlertView *alert1 =[[UIAlertView alloc] initWithTitle:#"Event" message:#"Event added in calendar" delegate:self cancelButtonTitle:#"OK" otherButtonTitles:nil];
dispatch_async(dispatch_get_main_queue(), ^(void){
[alert1 show];
});
Can we generate alert view in #finally block
is this possible?
#finally{
// alert view code
}
Can anyone answer me about these two issues?

Edit Text in Pop Up Box

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.

Show Next Screen Only After User Closes Alert

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

UIAlertView Login and Password Input with three buttons

I just found a strange problem, when I try to use three buttons in an UIAlertView, the view is displayed weirdly, as you can see in this screenshot :
Here is the code :
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:#"Login" message:nil delegate:self cancelButtonTitle:#"Cancel" otherButtonTitles:#"Login",#"Forget Password", nil];
[alert setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
UITextField *place=[alert textFieldAtIndex:0];
place.placeholder=#"Email";
[alert show];
[alert release];
Please suggest me how I can correct this. Thanks.

Resources