How to keep two SKPhysicsBodyies from passing through each other?

In my app, I have greyBars and one border bar. The border bar keeps the greyBars from falling off the screen.

Only one greyBar is used at a time. When it is completely filed with colored gems, a new bar is created and brought up from the bottom of the screen, with the code below.

The result I want is that the new bar, the one with all white diamonds pushes up the old bar and the new bar remains on the bottom. You can see by the screenshot that somehow the new bar ended up on top, even though it was coming from the bottom.

I slowed down the duration of the greyBar's movement to see what was going wrong.

While the two greyBars do clash with each other, the new one (the one on the bottom) ends up pushing THROUGH the top bar.

My assumption was that the new greyBar would just push up the old bar(s), and remain on the bottom.

Is there some "solidity" type property that I am missing?

myGreyBar[0].physicsBody?.categoryBitMask    = bodyMasks.greyBarMask.rawValue
    myGreyBar[0].physicsBody?.contactTestBitMask = bodyMasks.blankMask.rawValue
    myGreyBar[0].physicsBody?.collisionBitMask   = bodyMasks.greyBarMask.rawValue

 myGreyBar[0].isHidden = false;
 myGV.gameScene?.addChild(myGreyBar[0])

let moveAction      = SKAction.move(to: CGPoint(x:(myGV.safeSceneRect.width/2) - (size.width/2), y: (myGemBase?.size.height)! + (myGV.border?.size.height)! + 200), duration: 10.0)

myGreyBar[0].run(moveAction, completion:{myGreyBar[0].physicsBody?.collisionBitMask   = bodyMasks.borderMask.rawValue|bodyMasks.greyBarMask.rawValue})

How to keep two SKPhysicsBodyies from passing through each other?
 
 
Q