I'm trying to write down the steps which every basic set theory book usually just assume, which is the equivalence between the statements below (where $\Gamma$ is the family of posets which are ccc).
(I) $MA_{\kappa}$: Given a non-empty ccc poset $\mathbb{P}$ and a family $\{D_{\alpha}: \alpha <\kappa\}$ of dense subsets of $\mathbb{P}$, there exists a filter $G$ with $G\cap D_{\alpha}\not = \emptyset$ for all $\alpha<\kappa$.
(II) $FA_{\kappa}(\Gamma)$: Given a poset $\mathbb{P}$ and a family $\{I_{\alpha}: \alpha <\kappa\}$ of maximal antichains of $\mathbb{P}$, there exists a filter $G$ with $G\cap I_{\alpha}\not = \emptyset$ for all $\alpha<\kappa$.
Of course we just have to "translate" dense into maximal antichains and vice versa. I could do (I) $\implies$ (II) closing downwards the given antichains to get $\kappa$ dense subsets and apply $MA_{\kappa}$.
But on (II) $\implies$ (I) I couldn't produce a maximal antichain from the given dense subsets. I tried to set $I_{\alpha}=\{p\in D_{\alpha}: \forall q\in D_{\alpha} (q\not=p \implies q \perp p)\}$, but this antichain does not need to be maximal.
Could you help me? I don't know if it is actually simpler than what I'm trying to do.
Here's something that you can do by recursion:
The proof is easy. By recursion, construct a sequence of antichains: enumerate $D=\{p_\alpha\mid\alpha<\lambda\}$ for some $\lambda$, then pick the least point you can add to your antichain, and take unions at limit stages. By exhaustion, this must stabilise at some point, which means we have a maximal antichain.
In the ccc case we stabilise after countably many steps, of course. But the above is a general fact about forcing and dense open sets (at least as far as assuming the axiom of choice holds).
Now, by enumerating the entire forcing notion, given a family of dense open sets, we can uniformly and easily construct a family of maximal antichains contained in the dense open sets.