I don't think you understand how to use define directives.
All this line...
#define loggedIn 0
... does it cause the compiler to substitute a zero everywhere in the code that the text "loggedIn" appears.
So, if you have code that says:
if (loggedIn) {
//... load one nib
}else{
// .... load another nib
}
The compiler turns that into:
if (0) {
//... load one nib
}else{
// .... load another nib
}
In this case, zero will evalute to false and the second nib will always be loaded.
These types of defines are only used in this way in development so you can force the app into a specific state. For example, if you wanted to test the second nib repeatedly you would define "loggedIn" to zero and if you wanted to test the first you would define "loggedIN" as 1.
What you need to do is to do a test of some kind to see if the user is logged in. I don't know what that test would be as it varies on what your logging into. Then depending on the results of that test, you would load one nib or the other.
The define directive wouldn't have anything to do with it.