MonoTouch.Dialog Json 태그
이 페이지에서는 MonoTouch.Dialog의 JsonElement에서 수락한 Json 태그에 대해 설명합니다.
예제부터 살펴보겠습니다. 다음은 JsonElement에 전달할 수 있는 전체 Json 파일입니다.
{
"title": "Json Sample",
"sections": [
{
"header": "Booleans",
"footer": "Slider or image-based",
"id": "first-section",
"elements": [
{
"type": "boolean",
"caption": "Demo of a Boolean",
"value": true
}, {
"type": "boolean",
"caption": "Boolean using images",
"value": false,
"on": "favorite.png",
"off": "~/favorited.png"
}, {
"type": "root",
"title": "Tap for nested controller",
"sections": [
{
"header": "Nested view!",
"elements": [
{
"type": "boolean",
"caption": "Just a boolean",
"id": "the-boolean",
"value": false
}, {
"type": "string",
"caption": "Welcome to the nested controller"
}
]
}
]
}
]
}, {
"header": "Entries",
"elements" : [
{
"type": "entry",
"caption": "Username",
"value": "",
"placeholder": "Your account username"
}
]
}
]
}
위의 태그는 다음 UI를 생성합니다.
트리의 모든 요소는 속성을 "id"
포함할 수 있습니다. 런타임 시 JsonElement 인덱서를 사용하여 개별 섹션 또는 요소를 참조할 수 있습니다. 다음과 같습니다.
var jsonElement = JsonElement.FromFile ("demo.json");
var firstSection = jsonElement ["first-section"] as Section;
var theBoolean = jsonElement ["the-boolean"] as BooleanElement;
루트 요소 구문
Root 요소에는 다음 값이 포함됩니다.
title
sections
(선택 사항)
루트 요소는 중첩된 컨트롤러를 만드는 요소로 섹션 내부에 나타날 수 있습니다. 이 경우 추가 속성 "type"
은 다음으로 설정해야 합니다. "root"
url
속성이 "url"
설정된 경우 사용자가 이 RootElement를 탭하면 코드는 지정된 URL에서 파일을 요청하고 내용을 새 정보로 표시합니다. 이를 사용하여 사용자가 탭하는 내용에 따라 서버에서 사용자 인터페이스를 확장할 수 있습니다.
group
이 값을 설정하면 루트 요소의 그룹 이름이 설정됩니다. 그룹 이름은 요소의 중첩된 요소 중 하나에서 루트 요소의 값으로 표시되는 요약을 선택하는 데 사용됩니다. 이 값은 검사box의 값이거나 라디오 단추의 값입니다.
라디오 선택됨
중첩된 요소에서 선택된 라디오 항목을 식별합니다.
title
있는 경우 RootElement에 사용되는 제목이 됩니다.
type
섹션에 "root"
표시되는 경우(컨트롤러를 중첩하는 데 사용됨)로 설정해야 합니다.
섹션
개별 섹션이 있는 Json 배열입니다.
섹션 구문
섹션에는 다음이 포함됩니다.
header
(선택 사항)footer
(선택 사항)elements
배열
헤더
있는 경우 머리글 텍스트는 섹션의 캡션 표시됩니다.
바닥글
있는 경우 바닥글이 섹션의 아래쪽에 표시됩니다.
요소
요소의 배열입니다. 각 요소에는 만들 요소의 종류를 식별하는 데 사용되는 키 "type"
인 키가 하나 이상 포함되어야 합니다.
일부 요소는 다음과 같은 "caption"
몇 가지 공통 속성을 공유합니다 "value"
. 다음은 지원되는 요소 목록입니다.
string
요소(스타일 지정 및 스타일 지정 안 됨)entry
줄(일반 또는 암호)boolean
값(스위치 또는 이미지 사용)
문자열 요소는 사용자가 셀 또는 액세서리를 탭할 때 호출할 메서드를 제공하여 단추로 사용할 수 있습니다.
렌더링 요소
렌더링 요소는 C# StringElement 및 StyledStringElement를 기반으로 하며 다양한 방법으로 정보를 렌더링할 수 있으며 다양한 방법으로 렌더링할 수 있습니다. 가장 간단한 요소는 다음과 같이 만들 수 있습니다.
{
"type": "string",
"caption": "Json Serializer"
}
글꼴, 배경, 텍스트 색 및 장식과 같은 모든 기본값이 포함된 간단한 문자열이 표시됩니다. 이러한 요소에 작업을 연결하고 속성 또는 "onaccessorytap"
속성을 설정 "ontap"
하여 단추처럼 동작하도록 할 수 있습니다.
{
"type": "string",
"caption": "View Photos",
"ontap": "Acme.PhotoLibrary.ShowPhotos"
}
위의 내용은 "Acme.PhotoLibrary" 클래스에서 "Show사진" 메서드를 호출합니다. "onaccessorytap"
유사하지만 사용자가 셀을 탭하는 대신 액세서리를 탭하는 경우에만 호출됩니다. 이 기능을 사용하려면 액세서리도 설정해야 합니다.
{
"type": "string",
"caption": "View Photos",
"ontap": "Acme.PhotoLibrary.ShowPhotos",
"accessory": "detail-disclosure",
"onaccessorytap": "Acme.PhotoLibrary.ShowStats"
}
렌더링 요소는 한 번에 두 개의 문자열을 표시할 수 있으며, 하나는 캡션, 다른 하나는 값입니다. 이러한 문자열이 렌더링되는 방법은 스타일에 따라 달라지며 속성을 사용하여 "style"
설정할 수 있습니다. 기본값은 왼쪽의 캡션 오른쪽에 값을 표시합니다. 자세한 내용은 스타일 섹션을 참조하세요. 색은 '#' 기호와 빨강, 녹색, 파랑 및 알파 값의 값을 나타내는 16진수 숫자를 사용하여 인코딩됩니다. 콘텐츠는 RGB 또는 RGBA 값을 나타내는 짧은 형식(3 또는 46진수)으로 인코딩할 수 있습니다. 또는 RGB 또는 RGBA 값을 나타내는 긴 형식(6 또는 8자리 숫자)입니다. 짧은 버전은 동일한 16진수 숫자를 두 번 쓰는 약식입니다. 따라서 "#1bc" 상수는 red=0x11, green=0xbb 및 blue=0xcc로 해석됩니다. 알파 값이 없으면 색이 불투명합니다. 몇 가지 예:
"background": "#f00"
"background": "#fa08f880"
액세서리
렌더링 요소에 표시할 액세서리의 종류를 결정합니다. 가능한 값은 다음과 같습니다.
checkmark
detail-disclosure
disclosure-indicator
값이 없으면 액세서리가 표시되지 않습니다.
백그라운드
배경 속성은 셀의 배경색을 설정합니다. 값은 이미지의 URL이거나(이 경우 비동기 이미지 다운로더가 호출되고 이미지가 다운로드되면 배경이 업데이트됨) 색 구문을 사용하여 지정한 색일 수 있습니다.
caption
렌더링 요소에 표시할 기본 문자열입니다. 글꼴 및 속성을 설정하여 글꼴 및 "font"
색을 "textcolor"
사용자 지정할 수 있습니다. 렌더링 스타일은 속성에 의해 결정됩니다 "style"
.
색 및 세부 색
기본 텍스트 또는 자세한 텍스트에 사용할 색입니다.
detailfont 및 font
캡션 또는 세부 텍스트에 사용할 글꼴입니다. 글꼴 사양의 형식은 필요에 따라 대시와 점 크기 뒤에 있는 글꼴 이름입니다. 유효한 글꼴 사양은 다음과 같습니다.
- "헬베티카"
- "헬베티카-14"
linebreak
선을 분할하는 방법을 결정합니다. 가능한 값은 다음과 같습니다.
character-wrap
clip
head-truncation
middle-truncation
tail-truncation
word-wrap
둘 다 character-wrap
0 word-wrap
으로 설정된 속성과 "lines"
함께 사용하여 렌더링 요소를 여러 줄 요소로 변환할 수 있습니다.
ontap 및 onaccessorytap
이러한 속성은 개체를 매개 변수로 사용하는 애플리케이션의 정적 메서드 이름을 가리킵니다. JsonDialog.FromFile 또는 JsonDialog.FromJson 메서드를 사용하여 계층을 만들 때 선택적 개체 값을 전달할 수 있습니다. 그런 다음 이 개체 값이 메서드에 전달됩니다. 이를 사용하여 정적 메서드에 일부 컨텍스트를 전달할 수 있습니다. 예시:
class Foo {
Foo ()
{
root = JsonDialog.FromJson (myJson, this);
}
static void Callback (object obj)
{
Foo myFoo = (Foo) obj;
obj.Callback ();
}
}
lines
이 값을 0으로 설정하면 포함된 문자열의 내용에 따라 요소의 자동 크기가 지정됩니다. 이렇게 하려면 속성 "character-wrap"
도 설정 "linebreak"
해야 "word-wrap"
합니다.
style
스타일은 콘텐츠를 렌더링하는 데 사용할 셀 스타일의 종류를 결정하며 UITableViewCellStyle 열거형 값에 해당합니다. 가능한 값은 다음과 같습니다.
"default"
"value1"
"value2"
"subtitle"
: 자막이 있는 텍스트입니다.
부제목
부제에 사용할 값입니다. 스타일을 "subtitle"
문자열로 설정하고 속성을 설정하는 "value"
바로 가기입니다.
이 작업은 둘 다 단일 항목으로 수행합니다.
textcolor
텍스트에 사용할 색입니다.
value
렌더링 요소에 표시할 보조 값입니다. 이 레이아웃은 설정의 영향을 받습니다 "style"
. 및 을 설정하여 글꼴 및 색을 "detailfont"
"detailcolor"
사용자 지정할 수 있습니다.
부울 요소
부울 요소는 형식을 "caption"
포함할 수 있으며 "value"
true 또는 false로 설정됩니다. 및 "off"
속성이 "on"
설정되면 이미지로 간주됩니다. 이미지는 애플리케이션의 현재 작업 디렉터리를 기준으로 확인됩니다. 번들 상대 파일을 참조하려면 바로 가기로 사용하여 "~"
애플리케이션 번들 디렉터리를 나타낼 수 있습니다. 예를 들어 "~/favorite.png"
번들 파일에 포함된 favorite.png 있습니다. 예시:
{
"type": "boolean",
"caption": "Demo of a Boolean",
"value": true
},
{
"type": "boolean",
"caption": "Boolean using images",
"value": false,
"on": "favorite.png",
"off": "~/favorited.png"
}
type
형식은 둘 중 하나 "boolean"
또는 "checkbox"
.로 설정할 수 있습니다. 부울로 설정하면 UISlider 또는 이미지(둘 다 "on"
"off"
설정된 경우)를 사용합니다. 검사box로 설정하면 검사box를 사용합니다. 이 속성은 "group"
부울 요소에 특정 그룹에 속하는 것으로 태그를 지정하는 데 사용할 수 있습니다. 이는 루트가 동일한 그룹에 속한 모든 부울(또는 검사boxes)의 수로 결과를 요약하기 때문에 포함하는 루트에도 "group"
속성이 있는 경우에 유용합니다.
항목 요소
사용자가 데이터를 입력할 수 있도록 항목 요소를 사용합니다. 항목 요소의 형식은 하나 "entry"
또는 "password"
.입니다. "caption"
속성은 오른쪽에 표시할 텍스트로 설정되며 "value"
항목을 설정할 초기 값으로 설정됩니다. 빈 "placeholder"
항목에 대한 힌트를 사용자에게 표시하는 데 사용됩니다(회색으로 표시됨). 다음 몇 가지 예를 참조하세요.
{
"type": "entry",
"caption": "Username",
"value": "",
"placeholder": "Your account username"
}, {
"type": "password",
"caption": "Password",
"value": "",
"placeholder": "You password"
}, {
"type": "entry",
"caption": "Zip Code",
"value": "01010",
"placeholder": "your zip code",
"keyboard": "numbers"
}, {
"type": "entry",
"return-key": "route",
"caption": "Entry with 'route'",
"placeholder": "captialization all + no corrections",
"capitalization": "all",
"autocorrect": "no"
}
autocorrect
항목에 사용할 자동 수정 스타일을 결정합니다. 가능한 값은 true 또는 false(또는 문자열 및"no"
)입니다"yes"
.
대/소문자
항목에 사용할 대문자 스타일입니다. 가능한 값은 다음과 같습니다.
all
none
sentences
words
caption
항목에 사용할 캡션
Keyboard
데이터 입력에 사용할 키보드 유형입니다. 가능한 값은 다음과 같습니다.
ascii
decimal
default
email
name
numbers
numbers-and-punctuation
twitter
url
placeholder
항목에 빈 값이 있을 때 표시되는 힌트 텍스트입니다.
return-key
반환 키에 사용되는 레이블입니다. 가능한 값은 다음과 같습니다.
default
done
emergencycall
go
google
join
next
route
search
send
yahoo
value
항목의 초기 값입니다.
라디오 요소
라디오 요소에는 형식 "radio"
이 있습니다. 선택한 항목은 포함하는 루트 요소의 radioselected
속성에 의해 선택됩니다.
또한 속성에 대해 "group"
값이 설정된 경우 이 라디오 단추는 해당 그룹에 속합니다.
날짜 및 시간 요소
요소 형식 "datetime"
"date"
이며 "time"
시간, 날짜 또는 시간을 사용하여 날짜를 렌더링하는 데 사용됩니다. 이러한 요소는 캡션 및 값을 매개 변수로 사용합니다. 이 값은 .NET DateTime.Parse 함수에서 지원하는 모든 형식으로 작성할 수 있습니다. 예시:
"header": "Dates and Times",
"elements": [
{
"type": "datetime",
"caption": "Date and Time",
"value": "Sat, 01 Nov 2008 19:35:00 GMT"
}, {
"type": "date",
"caption": "Date",
"value": "10/10"
}, {
"type": "time",
"caption": "Time",
"value": "11:23"
}
]
Html/웹 요소
탭하면 형식을 사용하여 로컬 또는 원격으로 지정된 URL의 내용을 렌더링하는 UIWebView를 포함하는 셀을 "html"
만들 수 있습니다. 이 요소에 대한 두 가지 속성은 다음과 같습니다"caption"
."url"
{
"type": "html",
"caption": "Miguel's blog",
"url": "https://tirania.org/blog"
}