iOS app rejected - top navigation missing

Hi. My app update was submitted last week, and today it came back as rejected. They said the app had a poor user experience as their test user became “stuck” on a view. The app utilizes the back navigation at the top-left of the screen to return back to the previous view. The Apple reviewer included a screenshot of the view, and the Back navigation was missing, hence they were stuck on the one view with no where to go. So I checked it out myself on Simulator as well as pushing it to my iPad, and the navigation buttons are present and work as expected.

I responded to the reviewer explaining this as well as including my own screenshot from my iPad. Is this enough to get it back into review or do you think I need to resubmit the binary? Also, why would the reviewer not be seeing the back navigation button when all works on my devices? Plus, this is version 1.1. Version 1.0 made it through review without any issues, and there’s been no change to the navigation in the update!

Anyone have any experience or guidance?

Did you test on other devices? Maybe you only did a test with an iPad 32bit and not iPad 64bit version?

OK I just tested on my iPhone 5s, which I believe is running 64-bit, and I now see the same as the reviewer. What’s odd is that I am using a function to change the top navigation bar color, which I borrowed from someone else’s post. The color I selected is orange, but the reviewer’s screenshot as well as on my iPhone test is coming up a dark grey. This is the only thing I can foresee as causing this issue. The navigation bar setting is set to On in each of the views as expected. Could someone take a look at the function and see if something is wrong here? I am not very good with declares.

[code] declare function NSClassFromString lib “Foundation” (classname as CFStringRef) as ptr
declare function keyWindow lib “UIKit” selector “keyWindow” (obj_ref as ptr) as ptr
declare function sharedApplication lib “UIKit” selector “sharedApplication” (obj_ref as ptr) as ptr
declare function rootViewController lib “UIKit” selector “rootViewController” (obj_ref as ptr) as ptr
declare function navigationBar lib “UIKit” selector “navigationBar” (obj_ref as ptr) as ptr

dim sApp as ptr=sharedApplication(NSClassFromString(“UIApplication”))
dim currentWindow as ptr=keyWindow(sApp)
dim navController as ptr=rootViewController(currentWindow)
dim navBar as ptr= navigationBar(navController)

Declare Sub setBarTintColor lib UIKit selector “setBarTintColor:” (id as ptr, UIColor as Ptr)
setBarTintColor navBar, UIColor(&c99FF33)

declare Sub setTintColor lib UIKit selector “setTintColor:” (id as ptr, UIColor as Ptr)
setTintColor navBar, UIColor(&c0000FF)

declare sub setTranslucent lib UIKit selector “setTranslucent:” (id as ptr)
setTranslucent navBar[/code]

It may be a new framework Color bug. If your colors alpha channel is 0 it will munge the color. Try setting the alpha to 1. I submitted a bug report and it has been fixed according to feedback but not released.

I see UIColor in your code but nothing about its definition.

Check if UIColor is extended for 64bit, probably it is only 32.
For 32bit the declare use single, for 64 bit it has the same structure but has to use double

Thank you both.

[quote]Check if UIColor is extended for 64bit, probably it is only 32.
For 32bit the declare use single, for 64 bit it has the same structure but has to use double[/quote]
Antonio - How is this done? Do you have to do an If 32bit, then, elseif 64bit then? Would this also correct the missing nav bar, which is the primary focus?

What I did for the time being and just to get the update pushed through, I commented out anywhere this function is called. Tested on my iPhone again, and all the navigation is present. Ideally, I’d like the color in the nav bar, but that can wait for more testing. For now, I will deal with a working program that should pass inspection that has a white nav bar instead of orange

find the UIColor function definition your code
and change/correct it like this one :

  #if Target32Bit
    Declare Function getUIColor_ lib UIKitLib selector "colorWithRed:green:blue:alpha:"(cls as Ptr,r as Single,g as Single,b as Single,a as Single) as Ptr
  #Else
    Declare Function getUIColor_ lib UIKitLib selector "colorWithRed:green:blue:alpha:"(cls as Ptr,r as Double,g as Double,b as Double,a as Double) as Ptr
  #Endif
  
  Return getUIColor_(iosLib.NSClassFromString("UIColor"),c.Red/255,c.Green/255,c.Blue/255,1-c.Alpha/255)

the function you have has only the code for the 32bit

Thank you Antonio! I will give this a try. Appreciate your help!

Antonio Rinaldi solution will fix your issue for sure.
32bit -> single
64bit -> double

Hi Ryan, i had the same issue, here the code that works:

#If Target32Bit Then
  declare function colorFromRGBA lib UILib selector "colorWithRed:green:blue:alpha:" (id as Ptr, red as Single, green as Single, blue as Single, alpha as Single) as Ptr
  dim r as single 
  dim g as single 
  dim b as single 
  dim a as single
#Else
  declare function colorFromRGBA lib UILib selector "colorWithRed:green:blue:alpha:" (id as Ptr, red as Double, green as Double, blue as Double, alpha as Double) as Ptr
  dim r as Double 
  dim g as Double 
  dim b as Double 
  dim a as Double 
#Endif

r = c.red/255
g = c.Green/255
b = c.Blue/255
a = (255 - c.Alpha) / 255

rc = colorFromRGBA(NSClassFromString ("UIColor"), r, g, b, a)