CCTMXLayer не поддерживает добавление плиток во время выполнения, потому что он реализован со всеми спрайтами в одной таблице спрайтов.Из-за этой детали реализации вы также не можете вызвать setTexture для отдельной плитки.
Самым простым решением было бы иметь спрайт, который вы хотите использовать, в самом начале.Если вы не можете сделать это, потому что он сгенерирован во время выполнения или чего-то еще, следующая лучшая вещь (не касаясь кода cocos2d) - это изменить таблицу спрайтов.
Поместите фиктивную плитку в таблицу спрайтов, которую вы используете для TMXLayer, и затем, когда у вас будет изображение, которое вы хотите использовать, запишите его в таблицу спрайтов, используя CCRenderTexture или что-то еще, и используйте вновь созданную текстуру в качествеТекстура TMXLayer.
Вы также можете изменить CCTMXLayer, чтобы учесть ваши функциональные возможности, но, похоже, вы хотите этого избежать.