Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6731883
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T10:34:54+00:00 2026-05-26T10:34:54+00:00

I outsourced some iPhone development and I am trying to make a simple change

  • 0

I outsourced some iPhone development and I am trying to make a simple change to the code, but it does not make any sense to me. I am hoping that someone can help me out. I would ask the original developer, but they just left for a week long vacation and I would prefer to not wait.

//
//  SettingViewController.m
//  FoodStorageManagement
//
//  Created by Ryan McLaughlin on 10/20/11.
//  Copyright 2011 Food Storage Management. All rights reserved.
//

#import "SettingViewController.h"
#import "MainViewController.h"
#import "XMLRPCRequest.h"
#import "XMLRPCResponse.h"
#import "XMLRPCConnection.h"
#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>
@implementation SettingViewController
@synthesize Obj_string,LoginState,hashkey,validuser,apikey,spinnerView; 

-(id)init
{
    [super init];
    img_loginBg=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Loginpage.png"]];
    img_loginBg.frame=CGRectMake(0, 0, 320, 460);

    app=[[UIApplication sharedApplication]delegate];

    UserIDtxt=[[UITextField alloc]initWithFrame:CGRectMake(150, 163, 160, 25)];
    UserIDtxt.returnKeyType=UIReturnKeyDone;
    UserIDtxt.backgroundColor=[UIColor clearColor];
    //UserIDtxt.text=@"user";
    UserIDtxt.delegate=self;
    UserIDtxt.tag=1;

    pwdText=[[UITextField alloc]initWithFrame:CGRectMake(150, 220, 160, 25)];
    pwdText.backgroundColor=[UIColor clearColor];
    //pwdText.text=@"123456";
    pwdText.secureTextEntry=YES;
    pwdText.returnKeyType=UIReturnKeyDone;
    pwdText.delegate=self;
    pwdText.tag=2;

    btn_SignUp=[UIButton buttonWithType:UIButtonTypeCustom];
    btn_SignUp.frame=CGRectMake(45, 335, 95, 35);
    btn_SignUp.backgroundColor=[UIColor clearColor];
    [btn_SignUp setTitle:@"" forState:UIControlStateNormal];
    [btn_SignUp addTarget:self action:@selector(ClickOnSignUp) forControlEvents:UIControlEventTouchUpInside];
    [btn_SignUp retain];

    btn_LogIn=[UIButton buttonWithType:UIButtonTypeCustom];
    btn_LogIn.frame=CGRectMake(175, 335, 95, 35);
    btn_LogIn.backgroundColor=[UIColor clearColor];
    [btn_LogIn setTitle:@"" forState:UIControlStateNormal];
    [btn_LogIn addTarget:self action:@selector(ClickOnLogIn) forControlEvents:UIControlEventTouchUpInside];
    [btn_LogIn retain];

    NSString *deviceVersion=[UIDevice currentDevice].systemVersion;
    NSLog(@"%@",deviceVersion);

    btn_Back=[UIButton buttonWithType:UIButtonTypeCustom];
    btn_Back.frame=CGRectMake(8, 417, 50, 40);
    btn_Back.backgroundColor=[UIColor clearColor];
    [btn_Back setTitle:@"" forState:UIControlStateNormal];
    [btn_Back addTarget:self action:@selector(ClickOnBack) forControlEvents:UIControlEventTouchUpInside];
    [btn_Back retain];

    return self;
}

// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView 
{
    [super loadView];
    [self.view addSubview:img_loginBg];
    [self.view addSubview:btn_SignUp];
    [self.view addSubview:btn_LogIn];
    [self.view addSubview:btn_Back];
    [self.view addSubview:UserIDtxt];
    [self.view addSubview:pwdText];
}

-(void)ClickOnSignUp
{
    Connection=[[NetworkConnection alloc]initConnection];
    if (Connection.isReachable)
    {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.foodstoragemanagement.com/signup.php"]];
    }
    else 
    {
        UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Inventory" message:@"Network Connection unavailable.."  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [LoginError show];
        [LoginError release];

    }
}

-(void) startSpinner:(NSString*)type andDisplay:(NSString*)display{

    //remove any existing spinners at this point

    if(self.spinnerView)
    {
        [self.spinnerView.view removeFromSuperview];
        self.spinnerView = nil;
    }
    self.spinnerView =[[[SpinnerModal alloc]initWithType:type andDisplay:display]autorelease];
    //add this to the root view of the app
    //ViewManager *viewMgr = [ViewManager getManager];
    [self.view addSubview:self.spinnerView.view];   
}

-(void) stopSpinner{
    NSLog(@"SPINNER IS REMOVED");
    [self.spinnerView.view removeFromSuperview];
    self.spinnerView = nil;
}

-(void)ClickOnLogIn
{
    Connection=[[NetworkConnection alloc]initConnection];
    if (Connection.isReachable)
    {
        [self startSpinner:@"spinner" andDisplay:@"Loading"];
        timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(ClickOnLog) userInfo:nil repeats:NO];
    }
    else {
        UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Inventory" message:@"Network Connection unavailable.."  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [LoginError show];
                [LoginError release];
        [self stopSpinner];
    }

}

-(void)ClickOnLog
{
    NSDate* now = [NSDate date];
    NSString *dateString=[[NSString alloc]init];
    dateString = [now description];
    dateString=[self dateInFormat:@"%s"];

    NSString *username=[UserIDtxt.text lowercaseString];
    NSString *username_reverse=[username reverseString];

    NSString *password_hash=[self sha256:pwdText.text];

    NSString *str=[NSString stringWithFormat:@"%@%@%@",username,password_hash,dateString];
    str=[self sha256:str];
    app.username=[NSMutableString stringWithString:username];
    app.password=[NSMutableString stringWithString:password_hash];

    //url from plist
    NSString *server=[[NSString alloc]init];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Config" ofType:@"plist"];
    NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
    server=[plistDict objectForKey:@"NewUrl"];

    XMLRPCRequest *reqHello = [[XMLRPCRequest alloc] initWithHost:[NSURL URLWithString:server]];
    NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];

    [dict setValue:[UserIDtxt.text lowercaseString] forKey:@"username"];
    [dict setValue:str forKey:@"hash_key"];
    [dict setValue:dateString forKey:@"timestamp"];


    [reqHello setMethod:@"user.get_api" withObjects:[NSArray arrayWithObjects:dict,nil]];

    NSString *result=[self executeXMLRPCRequest:reqHello];
    if ([result length]>0)
    {   
        NSLog(@"OUTPUT %@",result);
        NSData* data=[result dataUsingEncoding:NSUTF8StringEncoding];
        NSXMLParser *parser1=[[NSXMLParser alloc]initWithData:data];
        [parser1 setDelegate:self];
        [parser1 parse];
        [reqHello release];

        defaults = [NSUserDefaults standardUserDefaults];
        app.defaultuser=[NSUserDefaults standardUserDefaults];
        [defaults setObject: app.globalApi_key forKey: @"api_key"];
        [defaults setObject:UserIDtxt.text forKey:@"username"];
        [defaults setObject:pwdText.text forKey:@"password"];
        app.defaultuser=defaults;   

        if (!app.globalApi_key)
        {
            defaults = [NSUserDefaults standardUserDefaults];
        }
        [defaults synchronize];
        if (!val)
        {
            val=[defaults objectForKey:@"api_key"];
        }

    }
    else 
    {
        UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Inventory" message:@"Unable to communicate with the server"  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [LoginError show];
        [LoginError release];
    }

    if( ![result isKindOfClass:[NSString class]] )//error occured
    {
        UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Inventory" message:@"unable to communicate with server"  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [LoginError show];
        [LoginError release];
    }
    else 
    {
        if ([self.validuser isEqualToString:@"Authenticated Successfully"])
        {
            if (app.Authorisation==TRUE) 
            {
                UIAlertView *LoginOK=[[UIAlertView alloc]initWithTitle:@"Authentication" message:@"Authenticated successfully!!!"  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [LoginOK show];
                [LoginOK release];
            }   
            else 
            {
                MainViewController *main=[[MainViewController alloc]init];
                [self.navigationController pushViewController:main animated:YES];
                [main release];

            }
        }
        else 
        {
            UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Authentication" message:self.validuser  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [LoginError show];
            [LoginError release];
        }
    } 
    [self stopSpinner];
}

- (void)alertView:(UIAlertView *)ConfirmationAlert didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if([ConfirmationAlert.title isEqualToString:@"Authentication"])

    {
        [self dismissModalViewControllerAnimated:YES];
        app.Authorisation=FALSE;
    }
}

# pragma mark Parsing Delegate Methods
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
    if([elementName isEqualToString:@"params"])
    {
        Obj_string = [[NSMutableString alloc]init];
        LoginState =[[NSMutableString alloc]init];
        hashkey=[[NSMutableString alloc]init];
        validuser=[[NSMutableString alloc]init];

    }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if([elementName isEqualToString:@"name"])
    {
        self.LoginState=self.Obj_string;
    }
    else if([elementName isEqualToString:@"string"])
    {
        //NSLog(@"%@",Obj_string);
        if([self.LoginState isEqualToString:@"hash_key"])
        {
            self.hashkey=self.Obj_string;
            app.globalhash_key=self.hashkey;
        }
        if([self.LoginState isEqualToString:@"api"])
        {
            self.apikey=self.Obj_string;
            app.globalApi_key=self.apikey;
        }
        if([self.LoginState isEqualToString:@"message"])
        {
            self.validuser=self.Obj_string;
        }
    }

    [Obj_string release];
    Obj_string = nil;
    Obj_string = [[NSMutableString alloc]init];
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [Obj_string appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
    //[LoginState appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];

}


-(NSString *)dateInFormat:(NSString*)stringFormat {
    char buffer[80];
    const char *format = [stringFormat UTF8String];
    time_t rawtime;
    struct tm * timeinfo;
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    strftime(buffer, 80, format, timeinfo);
    return [NSString  stringWithCString:buffer encoding:NSUTF8StringEncoding];
}

- (NSString *)sha256:(NSString *)str
{   
    const char *inputString = [str UTF8String];
    unsigned char hashedChars[32]; // 32bit encoding
    //unsigned char hashedChars[64]; // 64 bit encoding
    //unsigned char hashedChars[64]; //16 bit encoding
    CC_SHA256(inputString , strlen(inputString), hashedChars);
    NSData *hashedData = [NSData dataWithBytes:hashedChars length:32];//32bit encoding
    //NSData *hashedData = [NSData dataWithBytes:hashedChars length:64]; //64bit encoding
    //NSData *hashedData = [NSData dataWithBytes:hashedChars length:16]; //16bit encoding

    NSLog(@"hashedData = %@", hashedData);
    NSString *someString = [NSString stringWithFormat:@"%@", hashedData];

    someString = [someString stringByReplacingOccurrencesOfString:@" " withString:@""];
    someString = [someString stringByReplacingOccurrencesOfString:@"<" withString:@""];
    someString = [someString stringByReplacingOccurrencesOfString:@">" withString:@""];
    //return hash;
    return someString;
}

- (NSString *)getMD5FromString:(NSString *)source
{
    const char *src = [source UTF8String];
    unsigned char result[16];
    CC_MD5(src, strlen(src), result);
    NSString *ret = [[[NSString alloc] initWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
                      result[0], result[1], result[2], result[3],
                      result[4], result[5], result[6], result[7],
                      result[8], result[9], result[10], result[11],
                      result[12], result[13], result[14], result[15]
                      ] autorelease];
    return [ret lowercaseString];
}

- (id)executeXMLRPCRequest:(XMLRPCRequest *)req
{
    XMLRPCResponse *userInfoResponse = [XMLRPCConnection sendSynchronousXMLRPCRequest:req];
    return [userInfoResponse object];
}

-(void)ClickOnBack
{
    [self dismissModalViewControllerAnimated:YES];
    //[self.navigationController popViewControllerAnimated:YES];
    //MainViewController *mainView=[[MainViewController alloc]init];
//  [self.navigationController popToViewController:mainView animated:YES];
}

-(BOOL)textFieldShouldReturn:(UITextField*)textField;
{
    NSInteger nextTag = textField.tag + 1;
    // Try to find next responder
    UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
    if (nextResponder) {
        // Found next responder, so set it.
        [nextResponder becomeFirstResponder];
    } else {
        // Not found, so remove keyboard.
        [textField resignFirstResponder];
    }
    return NO; // We do not want UITextField to insert line-breaks.
}

-(NSString*) digest:(NSString*)input  
{  

    NSData *data = [input dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];  
  //  uint8_t digest[CC_SHA1_DIGEST_LENGTH];  
    uint8_t digest[CC_SHA256_DIGEST_LENGTH];  

    CC_SHA1(data.bytes, data.length, digest);  
    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];  

   // for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)  

        for(int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++)  

        [output appendFormat:@"%02x", digest[i]];  

    return output;  

}  


/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}
*/

/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}


@end

The part in question is this

if ([self.validuser isEqualToString:@"Authenticated Successfully"])
    {
        if (app.Authorisation==TRUE) 
        {
            UIAlertView *LoginOK=[[UIAlertView alloc]initWithTitle:@"Authentication" message:@"Authenticated successfully!!!"  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [LoginOK show];
            [LoginOK release];
        }   
        else 
        {
            MainViewController *main=[[MainViewController alloc]init];
            [self.navigationController pushViewController:main animated:YES];
            [main release];

        }
    }
    else 
    {
        UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Authentication" message:self.validuser  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [LoginError show];
        [LoginError release];
    }
} 

On the surface it seems really simple. The change I want to make is to remove this alert

UIAlertView *LoginOK=[[UIAlertView alloc]initWithTitle:@"Authentication" message:@"Authenticated successfully!!!"  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [LoginOK show];
                [LoginOK release];

However, any change to the alert causes the pushViewController to stop working. I have tried commenting the alert out,

if ([self.validuser isEqualToString:@"Authenticated Successfully"])
    {
    if (app.Authorisation==TRUE) 
    {
       // UIAlertView *LoginOK=[[UIAlertView alloc]initWithTitle:@"Authentication" message:@"Authenticated successfully!!!"  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        //[LoginOK show];
        //[LoginOK release];
    }   
    else 
    {
        MainViewController *main=[[MainViewController alloc]init];
        [self.navigationController pushViewController:main animated:YES];
        [main release];

    }
    }
    else 
    {
        UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Authentication" message:self.validuser  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [LoginError show];
        [LoginError release];
    }
} 

I have tried rewriting the second if

if ([self.validuser isEqualToString:@"Authenticated Successfully"])
    {
    if (app.Authorisation==FALSE) 
    {

        MainViewController *main=[[MainViewController alloc]init];
        [self.navigationController pushViewController:main animated:YES];
        [main release];

    }
    }
    else 
    {
        UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Authentication" message:self.validuser  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [LoginError show];
        [LoginError release];
    }
} 

I have also tried completely removing the second if

if ([self.validuser isEqualToString:@"Authenticated Successfully"])
    {

        MainViewController *main=[[MainViewController alloc]init];
        [self.navigationController pushViewController:main animated:YES];
        [main release];


    }
    else 
    {
        UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Authentication" message:self.validuser  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [LoginError show];
        [LoginError release];
    }
} 

But the pushViewController will not work unless I have the alert in the code. I don’t get any error, and the app does not crash, it just stays in the current page, so I am completely at a loss. It makes me think their is some action that is triggered by clicking “OK” in the alert, but I don’t see anything in the code.

I have also stepped through the code to see if I can spot the problem but it seems fine.

In case it matters I am using xcode 4.2 and iOS 5 sdk.

Another strange occurance is that if I run the code like this

if ([self.validuser isEqualToString:@"Authenticated Successfully"])
        {

                MainViewController *main=[[MainViewController alloc]init];
                [self.navigationController pushViewController:main animated:YES];
                [main release];

        }
        else 
        {
            UIAlertView *LoginError=[[UIAlertView alloc]initWithTitle:@"Authentication" message:self.validuser  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [LoginError show];
            [LoginError release];
        }

and I get a login error (meaning it triggers the alert in the else). Then after clicking ok it moves on to the next page. I really don’t understand how this could happen since they are in different part of the if. I must be missing something obvious.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T10:34:55+00:00Added an answer on May 26, 2026 at 10:34 am

    The Uialertview delegate method never gets called, therefore never dismisses the modal view controller

    - (void)alertView:(UIAlertView *)ConfirmationAlert didDismissWithButtonIndex:(NSInteger)buttonIndex
    

    Just dismiss the view controller next to the commented code

    [self dismissModalViewControllerAnimated:YES];
    app.Authorisation=FALSE;
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

The company I work for has outsourced development of an iPhone app to another
Having inherited a project from an Outsourced development company, I've been asked to modify
We outsourced a web based portal and now we're not interested to work with
I am looking to make an iPhone/iPad/OSX/Windows capable application that wirelessly tracks inventory (primarily
I'm doing some bit of redesigning here for which we hired an outsourced freelance
I'm about to begin development of an iPhone app. The app itself is fairly
We have a large solution with many projects. Some of the projects were outsourced,
Is it possible to convert a dll library back to source code? Not that
Wow, I just got back a huge project in C# from outsourced developers and
Question says it all, really. I'm not sure what the problem is. I'm fairly

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.