The row indexes start at zero for each new section.
For example:
if ([indexPath section] == 2) {
if (indexPath.row == 3) {
Should be:
if ([indexPath section] == 2) {
if (indexPath.row == 0) {
Furthermore, section indexes also start at zero so you probably want to decrement each index in your if statements.