используя titleView в исходном коде раскадровки - PullRequest
0 голосов
/ 07 мая 2019

Я хочу иметь titleView в моем навигационном элементе, чтобы я мог получить что-то вроде этого в верхней части экрана.

Desired nav bar in UI

Я нашел, как это сделать в коде, как

navigationItem.titleView = MyCustomUiView

но я хочу сделать это в исходном коде раскадровки.

Я получаю, что rightBarButtonItem отображается нормально, но когда я пытаюсь добавить titleView barButtonItem, xml не будет анализироваться.

Вот что я пытаюсь:

                   <navigationItem key="navigationItem" id="ddL-ut-3b9">    
                    <barButtonItem key="titleView" style="plain" id="11600">
                        <view key="customView" contentMode="scaleToFill" id="11599">
                            <rect key="frame" x="0.0" y="0.0" width="140" height="44"/>
                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES" flexibleMinY="YES"/>
                            <color key="backgroundColor" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace" white="0" alpha="0"/>                                                                
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Disclaimer" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="11601">
                                    <rect key="frame" x="0.0" y="0.0" width="116" height="37"/>
                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES" flexibleMinY="YES"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                    <color key="textColor" colorSpace="custom" customColorSpace="sRGB" red="0.982638542758316" green="1" blue="0.96209174603214" alpha="1"/>                                        <nil key="highlightedColor"/>
                                    <color key="backgroundColor" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace" white="0" alpha="0"/>                                    </label>
                            </subviews>
                        </view>
                    </barButtonItem>               
                   <barButtonItem key="rightBarButtonItem" title="Log Out" style="plain" id="o6O-LC-29z">
                        <color key="tintColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
                        <connections>                                <action selector="btnLogOut:" destination="24s-67-KDm" id="8tF-zL-Lq7"/>
                        </connections>
                    </barButtonItem>
                </navigationItem>

Что я делаю не так?

Этот отображается нормально, когда он единственный

 <barButtonItem key="rightBarButtonItem" 

Но когда я добавлю

 <barButtonItem key="titleView"

Я получаю, Не удалось разобрать xml

Идеи

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Получил это работает."titleView @ matt не может быть UIBarButtonItem. Это должен быть UIView", помогло мне заставить его работать, но это не было достаточным руководством.[ПРИМЕЧАНИЕ: я работаю в Visual Studio для Mac над приложением Xamarin для iOS.]

По какой-то причине Дизайнер каждый раз переносил UIView, который я перетаскивал, в навигационный элемент barButtonItem.- в результате я получаю xml в моем исходном сообщении.

Итак, я удалил элемент barButtonItem и заменил этот

<view key="customView"

на этот

<view key="titleView"

Извините, еслиЯ не сделал это правильно.Если вы должны дать мне еще -1, то я думаю, что вы должны.

: -)

0 голосов
/ 07 мая 2019

Не пытайтесь редактировать исходный XML-файл раскадровки как текст, особенно для чего-то такого сложного.Вы не можете сделать это правильно.(Во-первых, вам нужно будет вставить всю необходимую информацию атрибута id: я заметил, что вы не смогли этого сделать.) Редактировать раскадровку можно в графическом редакторе раскадровки.Если вы не видите раскадровку в графическом виде, нажмите на нее правой кнопкой мыши в навигаторе проекта и выберите «Открыть как» -> «Интерфейсный конструктор».

Вы также говорите

, когда я пытаюсь добавитьtitleView barButtonItem

titleView не может быть UIBarButtonItem.Это должен быть UIView, а UIBarButtonItem не является UIView.Таким образом, чтобы настроить это в раскадровке, добавьте желаемое представление (или подкласс представления) к сцене и подключите к ней выход titleView из элемента навигации.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...