Unexpected output after putting SiteTree into TreeMultiSelectField

I've been trying to add a dropdown to my CMS that allows the user to create a link to a page on the site. Rather than expect them to "hardcode" (copy & paste in) the URL of their chosen page, I had loaded the siteTree into a TreeMultiSelectField.

I've put the main extract of the code at the base of my post.

It "works" in the CMS so far as that all the site pages load into the dropdown, you can select one and then save it.

However, when I then call the item on the template ($ChooseURL1) the output I get back is as follows:

Since ChooseURL1 is a set of sitetree objects (many many relational) you cannot simply print out $ChooseURL1 in the template. You should loop over the actual elements and print out what you want. For example:

However as it would be better for the user to select only one page from the tree, I tried to change it to a has-one relationship and use TreeDropdownField. However I found that although it all implemented in the CMS, when I selected a field and did a Save & Publish on the page, the dropdown did not remember what was selected and went back to "choose..."

Also, in the site, the conrtrol $Link, or $ChooseURL1.Link (I tried both) repeatedly returned "/" and Title function returned nothing.

I even used a different name in case there was some confusion, eg ChoosePage1 as a has one. Still no change.

Not sure what I was doing wrong, so I've stuck with multiselect and many-many array until I can work it out.