Random behavior when you add or remove code is often linked to memory corruption and debugging starts by looking at all the arrays and if you do something out of bounds and look also at all pointers.
I’ve noticed this
You are not passing in 12 values and because it’s a local variable, the missing 4 pointers are not initialized to 0 (which would be the null pointer) and so you can get 4 pointers to random places in the array.
This might have bad consequences when you use those random pointers in
btn[id].initButtonUL( &tft, left, top, w, h, RA8875_WHITE, RA8875_RED, RA8875_GREEN, titleStr[id], 3 );