https://github.com/futuretap/InAppSettingsKit

InAppSettingsKit InAppSettingsKit

InAppSettingsKit (IASK) is an open source solution to easily add in-app settings to your iPhone apps. InAppSettingsKit (IASK)은 iPhone 앱에 인앱 설정을 쉽게 추가 할 수있는 오픈 소스 솔루션입니다. Normally iOS apps use the Settings.bundle resource to make app's settings to be present in "Settings" app. 일반적으로 iOS 앱은 Settings.bundle 리소스를 사용하여 앱의 설정 을 '설정'앱에 표시되도록합니다. InAppSettingsKit takes advantage of the same bundle and allows you to present the same settings screen within your app. InAppSettingsKit은 동일한 번들을 사용하며 앱에 동일한 설정 화면을 표시 할 수 있습니다. So the user has the choice where to change the settings. 따라서 사용자는 설정을 변경할 위치를 선택할 수 있습니다. More details about the history of this development on the FutureTap Blog and the Edovia Blog .FutureTap 블로그Edovia 블로그 에서이 개발의 역사에 대한 자세한 내용.

Flattr this

How does it work? 어떻게 작동합니까?

To support traditional Settings.app panes, the app must include a Settings.bundle with at least a Root.plist to specify the connection of settings UI elements with NSUserDefaults keys. 기존의 Settings.app 창을 지원하려면 앱에 NSUserDefaults 키가있는 설정 UI 요소 연결을 지정하는 Root.plist 가있는 Settings.bundle 이 있어야합니다. InAppSettingsKit basically just uses the same Settings.bundle to do its work. InAppSettingsKit은 기본적으로 동일한 Settings.bundle을 사용하여 작업을 수행합니다. This means there's no additional work when you want to include a new settings parameter. 즉, 새 설정 매개 변수를 포함하려는 경우 추가 작업이 필요하지 않습니다. It just has to be added to the Settings.bundle and it will appear both in-app and in Settings.app. 그것은 단지 Settings.bundle에 추가되어야하고 그것은 in-app와 Settings.app 모두에 나타날 것입니다. All settings types like text fields, sliders, toggle elements, child views etc. are supported. 텍스트 필드, 슬라이더, 토글 요소, 자식 뷰 등과 같은 모든 설정 유형이 지원됩니다.

How to include it? 그것을 포함시키는 방법?

The source code is available on github . 소스 코드는 github에서 사용할 수 있습니다. There are several ways of installing it: 설치 방법에는 여러 가지가 있습니다.

Using Carthage카르타고 사용하기

Add to your Cartfile : 당신의 Cartfile 추가하십시오 :

 github "futuretap/InAppSettingsKit" "master" 

Using CocoaPodsCocoaPods 사용하기

Add to your Podfile :Podfile 추가하십시오 :

 pod 'InAppSettingsKit' 

Including the source code소스 코드 포함

Copy the InAppSettingsKit subfolder into your project and drag the files right into your application.InAppSettingsKit 하위 폴더를 프로젝트에 복사하고 파일을 응용 프로그램으로 바로 끕니다. InAppSettingsKitSampleApp.xcodeproj demonstrates this scenario.InAppSettingsKitSampleApp.xcodeproj 는이 시나리오를 보여줍니다. If your project is compiled without ARC, you'll need to enable it for the IASK files. 프로젝트가 ARC없이 컴파일되면 IASK 파일에 대해 프로젝트를 활성화해야합니다. You can do so by adding -fobjc-arc in the "Compile Sources" phase. "소스 컴파일"단계에서 -fobjc-arc 를 추가하면됩니다. You can select all the relevant files at once with shift-click and then double-click in the Compiler Flags column to enter the text. Shift 키를 누른 상태에서 모든 관련 파일을 한꺼번에 선택하고 컴파일러 플래그 열을 두 번 클릭하여 텍스트를 입력 할 수 있습니다.

Using a static library정적 라이브러리 사용

Use the static library project to include InAppSettingsKit. InAppSettingsKit를 포함하려면 정적 라이브러리 프로젝트를 사용하십시오. To see an example on how to do it, open InAppSettingsKit.xcworkspace . 수행 방법에 대한 예제를 보려면 InAppSettingsKit.xcworkspace 엽니 다. It includes the sample application that uses the static library as well as the static library project itself. 여기에는 정적 라이브러리를 사용하는 샘플 응용 프로그램과 정적 라이브러리 프로젝트 자체가 포함됩니다. To include the static library project there are only a few steps necessary (the guys at HockeyApp have a nice tutorial about using static libraries, just ignore the parts about the resource bundle): 정적 라이브러리 프로젝트를 포함 시키려면 몇 단계 만 거치면됩니다. ( HockeyApp 의 사람들은 정적 라이브러리 사용에 관한 튜토리얼을 가지고 있습니다. 리소스 번들에 관한 부분은 무시하십시오) :

  • add the InAppSettingsKit.xcodeproject into your application's workspace 응용 프로그램의 작업 영역에 InAppSettingsKit.xcodeproject 를 추가하십시오.
  • add libInAppSettingsKit.a to your application's libraries by opening the Build-Phases pane of the main application and adding it in Link Binary with Libraries 기본 응용 프로그램의 빌드 - 단계 창을 열고 Link Binary with Libraries 라이브러리에 추가하여 응용 프로그램의 라이브러리에 libInAppSettingsKit.a 를 추가하십시오
  • use IASK by importing it via #import "InAppSettingsKit/..." # import "InAppSettingsKit / ..."을 통해 IASK를 가져 와서 IASK를 사용하십시오.
  • for Archive builds there's a minor annoyance: To make those work, you'll need to add $(OBJROOT)/UninstalledProducts/include to the HEADER_SEARCH_PATHS 아카이브 빌드에 약간의 성가심이 있습니다. 이러한 작업을 수행하려면 $(OBJROOT)/UninstalledProducts/includeHEADER_SEARCH_PATHS 에 추가해야합니다

Then you can display the InAppSettingsKit view controller using a navigation push, as a modal view controller or in a separate tab of a TabBar based application. 그런 다음 탐색 푸시, 모달 뷰 컨트롤러 또는 TabBar 기반 응용 프로그램의 별도 탭에서 InAppSettingsKit 뷰 컨트롤러를 표시 할 수 있습니다. The sample app demonstrates all three ways to integrate InAppSettingsKit. 샘플 앱은 InAppSettingsKit을 통합하는 세 가지 방법을 모두 보여줍니다.

App Integration 앱 통합

In order to start using the InAppSettings you must:InAppSettings 를 사용하려면 InAppSettings 을 수행해야합니다.

  • Add Settings.bundle to your project ( File -> Add File -> Settings bundle )Settings.bundle 을 프로젝트에 추가하십시오 ( File -> Add File -> Settings bundle ).
  • Go and edit Root.plist with your settings. 가서 설정으로 Root.plist 를 편집하십시오. It's fairly self-documenting to start from. 그것은 시작부터 상당히 문서화되어 있습니다. Read on to get insight into more advanced uses. 고급 사용법에 대한 통찰력을 얻기 위해 계속 읽으십시오.

Further integration depends on how your app is structured. 더 많은 통합은 앱 구성 방법에 달려 있습니다.

Apps with UI built in code코드가 내장 된 UI가있는 앱

  • Create a class inheriting from the IASKAppSettingsViewController :IASKAppSettingsViewController 에서 상속받은 클래스를 만듭니다.
 # import " InAppSettingsKit/IASKAppSettingsViewController.h " # import " InAppSettingsKit / IASKAppSettingsViewController.h "

@interface SettingsTableViewController : IASKAppSettingsViewController @interface SettingsTableViewController : IASKAppSettingsViewController

@end @종료 

and continue with instantiating SettingsTableViewController .SettingsTableViewController 를 인스턴스화하면서 계속하십시오. This way, you can customize the appearance of InAppSettingsKit by overriding some UITableViewDataSource or UITableViewDelegate methods. 이렇게하면 UITableViewDataSource 또는 UITableViewDelegate 메서드를 재정 의하여 InAppSettingsKit의 모양을 사용자 지정할 수 있습니다.

There's a sample application called InAppSettingsAppStaticLibrary which is an example of integration of IASK (static library build) with the app.InAppSettingsAppStaticLibrary 라는 샘플 애플리케이션은 IASK (정적 라이브러리 빌드)를 앱과 통합 한 예입니다.

Apps with UI built with storyboards스토리 보드로 제작 된 UI가있는 앱

  • Create the IASKAppSettingsViewController subclass named SettingsTableViewController like above 위와 같이 SettingsTableViewController 라는 IASKAppSettingsViewController 하위 클래스를 만듭니다.
  • Drag and drop a Table View Controller embedded into a Navigation Controller into your app and wire the storyboard to your app UI 내비게이션 컨트롤러에 내장 된 Table View Controller를 앱에 드래그 앤 드롭하여 스토리 보드를 앱 UI에 연결합니다.
  • Set the Table View Controller class to SettingsTableViewController Table View Controller 클래스를 SettingsTableViewControllerSettingsTableViewController
  • In the Table View Controller set "Show Done Button" under "App Settings View Controller" to "On" Table View Controller에서 "App Settings View Controller"아래의 "Show Done Button"을 "On"으로 설정하십시오
  • Set the Table View to "Grouped" style 표보기를 "그룹화 된"스타일로 설정하십시오.

There's a sample application InAppSettingsSampleAppStoryboard which shows how to wire everything up. 모든 애플리케이션을 InAppSettingsSampleAppStoryboard 하는 방법을 보여주는 InAppSettingsSampleAppStoryboard 샘플 애플리케이션이 있습니다.

Additional changes추가 변경

Depending on your project it might be needed to make some changes in the startup code of your app. 프로젝트에 따라 앱의 시작 코드를 일부 변경해야 할 수도 있습니다. Your app has to be able to reconfigure itself at runtime if the settings are changed by the user. 사용자가 설정을 변경하면 런타임에 앱을 재구성 할 수 있어야합니다. This could be done in a -reconfigure method that is being called from -applicationDidFinishLaunching as well as in the delegate method -settingsViewControllerDidEnd: of IASKAppSettingsViewController . 이 작업은 -applicationDidFinishLaunching 에서 호출되는 -reconfigure 메소드와 IASKAppSettingsViewController 의 delegate 메소드 IASKAppSettingsViewController -settingsViewControllerDidEnd: 에서 IASKAppSettingsViewController 있습니다.

You may need to make two changes to your project to get it to compile: 컴파일하기 위해 프로젝트를 두 가지 변경해야 할 수도 있습니다.

  1. Add MessageUI.framework andMessageUI.framework
  2. Enable ARC for the IASK files. IASK 파일에 대해 ARC를 사용합니다.

Both changes can be made by finding your target and navigating to the Build Phases tab. 목표를 찾아 빌드 단계 탭으로 이동하여 두 가지 변경을 수행 할 수 있습니다.

MessageUI.framework is needed for MFMailComposeViewController and can be added in the "Link Binary With Libraries" Section.MessageUI.frameworkMFMailComposeViewController 필요하며 "Link With Binary With Libraries"섹션에 추가 할 수 있습니다. Use the + icon. + 아이콘을 사용하십시오.

To enable ARC select all IASK* source files in the "Compile Sources" section, press Enter, insert -fobjc-arc and then "Done". ARC가 "소스 컴파일"섹션에서 모든 IASK * 소스 파일을 선택하려면 Enter 키를 누르고 -fobjc-arc 삽입 한 다음 "완료"를 입력하십시오.

iCloud sync iCloud 동기화

To sync your NSUserDefaults with iCloud, there's another project called FTiCloudSync which is implemented as a category on NSUserDefaults : All write and remove requests are automatically forwarded to iCloud and all updates from iCloud are automatically stored in NSUserDefaults .NSUserDefaults 를 iCloud와 동기화하려면 NSUserDefaults 의 카테고리로 구현되는 FTiCloudSync 라는 또 다른 프로젝트가 있습니다. 모든 쓰기 및 제거 요청은 자동으로 iCloud로 전달되고 iCloud의 모든 업데이트는 NSUserDefaults 자동으로 저장됩니다. InAppSettingsKit automatically updates the UI if the standard NSUserDefaults based store is used. InAppSettingsKit은 표준 NSUserDefaults 기반 저장소가 사용되는 경우 UI를 자동으로 업데이트합니다.

Goodies 상품

The intention of InAppSettingsKit was to create a 100% imitation of the Settings.app behavior. InAppSettingsKit의 목적은 Settings.app 동작을 100 % 모방하는 것입니다. However, we added some bonus features for extra flexibility. 그러나 추가 유연성을 위해 몇 가지 보너스 기능을 추가했습니다.

Custom inApp plists 사용자 정의 inApp plists

Since iOS 4 Settings plists can be device-dependent: Root~ipad.plist will be used on iPad and Root~iphone.plist on iPhone. iOS 4 설정 plists는 기기 Root~ipad.plist 수 있습니다. Root~ipad.plist 는 iPad에서 사용하고 Root~iphone.plist 는 iPhone에서 사용합니다. If not existent, Root.plist will be used. 존재하지 않으면 Root.plist 가 사용됩니다. InAppSettingsKit adds the possibility to override those standard files by using .inApp.plist instead of .plist . InAppSettingsKit은 .plist 대신 .inApp.plist 를 사용하여 이러한 표준 파일을 재정의 할 수있는 가능성을 추가합니다. Alternatively, you can create a totally separate bundle named InAppSettings.bundle instead of the usual Settings.bundle . 또는 일반 Settings.bundle 대신 InAppSettings.bundle 이라는 완전히 별개의 번들을 만들 수 있습니다. The latter approach is useful if you want to suppress the settings in Settings.app. 후자의 방법은 Settings.app의 설정을 억제하려는 경우에 유용합니다.

In summary, the plists are searched in this order: 요약하면, plists는 다음 순서로 검색됩니다.

  • InAppSettings.bundle/FILE~DEVICE.inApp.plist InAppSettings.bundle / FILE ~ DEVICE.inApp.plist
  • InAppSettings.bundle/FILE.inApp.plist InAppSettings.bundle / FILE.inApp.plist
  • InAppSettings.bundle/FILE~DEVICE.plist InAppSettings.bundle / FILE ~ DEVICE.plist
  • InAppSettings.bundle/FILE.plist InAppSettings.bundle / FILE.plist
  • Settings.bundle/FILE~DEVICE.inApp.plist Settings.bundle / FILE ~ DEVICE.inApp.plist
  • Settings.bundle/FILE.inApp.plist Settings.bundle / FILE.inApp.plist
  • Settings.bundle/FILE~DEVICE.plist Settings.bundle / FILE ~ DEVICE.plist
  • Settings.bundle/FILE.plist Settings.bundle / FILE.plist

Different in-app settings are useful in a variety of situations. 다양한 인앱 설정은 다양한 상황에서 유용합니다. For example, Where To? 예를 들어 어디서? uses this mechanism to change the wording of "At next start" (for resetting confirmation dialogs) to be appropriate if the app is already running. 이 메커니즘을 사용하여 앱이 이미 실행중인 경우 '다음 시작시'(확인 대화 상자 다시 설정)의 문구를 적절하게 변경합니다.

iOS 8+: Privacy link iOS 8 이상 : 개인 정보 링크

On iOS 8.0 or newer, if the app includes a usage key for various privacy features such as camera or location access in its Info.plist , IASK displays a "Privacy" cell at the top of the root settings page. iOS 8.0 이상에서는 Info.plist 에서 카메라 나 위치 정보 액세스와 같은 다양한 개인 정보 보호 기능에 대한 사용 키가 앱에 포함되어있는 경우 IASK는 루트 설정 페이지 상단에 '개인 정보'셀을 표시합니다. This cell opens the system Settings app and displays the settings pane for the app where the user can specify the privacy settings for the app. 이 셀은 시스템 설정 앱을 열고 사용자가 앱의 개인 정보 설정을 지정할 수있는 앱 설정 창을 표시합니다.

If you don't want to show Privacy cells, set the property neverShowPrivacySettings to YES . 개인 정보 셀을 표시하지 않으려면 neverShowPrivacySettings 속성을 YES 설정하십시오.

The sample app defines NSMicrophoneUsageDescription to let the cell appear. 샘플 앱은 NSMicrophoneUsageDescription 을 정의하여 셀을 표시합니다. Note that the settings page doesn't show any privacy settings yet because the app doesn't actually access the microphone. 앱이 실제로 마이크에 액세스하지 않기 때문에 설정 페이지에 아직 개인 정보 설정이 표시되지 않습니다. Privacy settings only show up in the Settings app after first use of the privacy-protected API. 개인 정보 보호 설정은 개인 정보 보호 된 API를 처음 사용한 후에 설정 앱에만 표시됩니다.

IASKOpenURLSpecifier IASKOpenURL 지정자

InAppSettingsKit adds a new element that allows to open a specified URL using an external application (ie Safari or Mail). InAppSettingsKit은 외부 응용 프로그램 (예 : Safari 또는 Mail)을 사용하여 지정된 URL을 열 수있는 새로운 요소를 추가합니다. See the sample Root.inApp.plist for details. 자세한 내용은 Root.inApp.plist 샘플을 참조하십시오.

IASKMailComposeSpecifier IASKMailComposeSpecifier

The custom IASKMailComposeSpecifier element allows to send mail from within the app by opening a mail compose view. 사용자 지정 IASKMailComposeSpecifier 요소를 사용하면 메일 작성보기를 열어 응용 프로그램 내에서 메일을 보낼 수 있습니다. You can set the following (optional) parameters using the settings plist: IASKMailComposeToRecipents , IASKMailComposeCcRecipents , IASKMailComposeBccRecipents , IASKMailComposeSubject , IASKMailComposeBody , IASKMailComposeBodyIsHTML . 설정 plist ( IASKMailComposeToRecipents , IASKMailComposeCcRecipents , IASKMailComposeBccRecipents , IASKMailComposeSubject , IASKMailComposeBody , IASKMailComposeBodyIsHTML )를 사용하여 다음 (선택적) 매개 변수를 설정할 수 있습니다. Optionally, you can implement 선택적으로,

 - (NSString*)settingsViewController:(id<IASKViewController>)settingsViewController mailComposeBodyForSpecifier:(IASKSpecifier*)specifier; 

in your delegate to pre-fill the body with dynamic content (great to add device-specific data in support mails for example). 동적 콘텐츠로 본문을 미리 채우는 데 도움이됩니다 (예 : 지원 메일에 장치 별 데이터를 추가하는 것이 좋습니다). An alert is displayed if Email is not configured on the device. 전자 메일이 장치에 구성되어 있지 않으면 경고가 표시됩니다. IASKSpecifier is the internal model object defining a single settings cell.IASKSpecifier 는 단일 설정 셀을 정의하는 내부 모델 객체입니다. Important IASKSpecifier properties: 중요 IASKSpecifier 등록 정보 :

  • key : corresponds to the Key in the Settings plistkey : 설정 plist의 Key 에 해당합니다.
  • title : the localized title of settings keytitle : 설정 키의 지역화 된 제목
  • type : corresponds to the Type in the Settings plisttype : 설정 plist의 Type 에 해당합니다.
  • defaultValue : corresponds to the DefaultValue in the Settings plistdefaultValue : 설정 plist의 DefaultValue 에 해당합니다.

IASKButtonSpecifier IASKButtonSpecifier

InAppSettingsKit adds a IASKButtonSpecifier element that allows to call a custom action. InAppSettingsKit은 사용자 지정 작업을 호출 할 수있는 IASKButtonSpecifier 요소를 추가합니다. Just add the following delegate method: 다음 위임 메서드를 추가하면됩니다.

 - (void)settingsViewController:(IASKAppSettingsViewController*)sender buttonTappedForSpecifier:(IASKSpecifier*)specifier; 

The sender is always an instance of IASKAppSettingsViewController , a UIViewController subclass. 보낸 사람은 항상 UIViewController 하위 클래스 인 IASKAppSettingsViewController 의 인스턴스입니다. So you can access its view property (might be handy to display an action sheet) or push another view controller. 따라서 뷰 속성에 액세스하거나 (액션 시트를 표시하는 것이 편리 할 수 ​​있음) 다른보기 컨트롤러를 푸시 할 수 있습니다. Another nifty feature is that the title of IASK buttons can be overriden by the (localizable) value from NSUserDefaults (or any other settings store - see below). 또 다른 멋진 기능은 IASK 버튼의 제목을 NSUserDefaults (또는 다른 설정 저장소 - 아래 참조)의 (지역화 가능) 값으로 재정의 할 수 있다는 것입니다. This comes in handy for toggle buttons (eg Login/Logout). 이것은 토글 버튼 (예 : 로그인 / 로그 아웃)에 편리합니다. See the sample app for details. 자세한 내용은 샘플 앱을 참조하십시오.

By default, Buttons are aligned centered except if an image is specified (default: left-aligned). 기본적으로 버튼은 이미지가 지정된 경우를 제외하고 가운데에 정렬됩니다 (기본값 : 왼쪽 맞춤). The default alignment may be overridden. 기본 정렬은 무시 될 수 있습니다.

IASKTextViewSpecifier IASKTextViewSpecifier

Similar to PSTextFieldSpecifier this element displays a full-width, multi line text view that resizes according to the entered text.PSTextFieldSpecifierPSTextFieldSpecifier 요소는 입력 된 텍스트에 따라 크기가 조정되는 전각, 다중 줄 텍스트보기를 표시합니다. It also supports KeyboardType , AutocapitalizationType and AutocorrectionType . 또한 KeyboardType , AutocapitalizationTypeAutocorrectionType 지원합니다.

FooterText FooterText

The FooterText key for Group elements is available in system settings since iOS 4. It is supported in InAppSettingsKit as well. 그룹 요소의 FooterText 키는 iOS 4부터 시스템 설정에서 사용할 수 있습니다. InAppSettingsKit에서도 지원됩니다. On top of that, we support this key for Multi Value elements as well. 또한 Multi Value 요소에 대해서도이 키를 지원합니다. The footer text is displayed below the table of multi value options. 바닥 글 텍스트는 다중 값 옵션 테이블 아래에 표시됩니다.

IASKCustomViewSpecifier IASKCustomViewSpecifier

You can specify your own UITableViewCell within InAppSettingsKit by using the type IASKCustomViewSpecifier . IASKCustomViewSpecifier 유형을 사용하여 InAppSettingsKit에서 고유 한 UITableViewCell 지정할 수 있습니다. A mandatory field in this case is the Key attribute. 이 경우 필수 필드는 Key 속성입니다. Also, you have to support the IASKSettingsDelegate protocol and implement these methods: 또한 IASKSettingsDelegate 프로토콜을 지원하고 다음 방법을 구현해야합니다.

 - (CGFloat)tableView:(UITableView*)tableView heightForSpecifier:(IASKSpecifier*)specifier; - (UITableViewCell*)tableView:(UITableView*)tableView cellForSpecifier:(IASKSpecifier*)specifier; 

Both methods are called for all your IASKCustomViewSpecifier entries. 두 방법 모두 모든 IASKCustomViewSpecifier 항목에 대해 호출됩니다. To differentiate them, you can access the Key attribute using specifier.key . 이들을 구별하기 위해 specifier.key 사용하여 Key 속성에 액세스 할 수 있습니다. In the first method you return the height of the cell, in the second method the cell itself. 첫 번째 방법에서는 셀 높이를 반환하고 두 번째 방법에서는 셀 자체를 반환합니다. You should use reusable UITableViewCell objects as usual in table view programming. 테이블 뷰 프로그래밍에서는 재사용 가능한 UITableViewCell 개체를 평소와 같이 사용해야합니다. There's an example in the Demo app. 데모 앱에 예제가 있습니다. Optionally you can implement 선택 사항으로

 - (void)settingsViewController:(IASKAppSettingsViewController*)sender tableView:(UITableView *)tableView didSelectCustomViewSpecifier:(IASKSpecifier*)specifier; 

to catch tap events for your custom view. 사용자 정의보기의 탭 이벤트를 포착합니다.

Custom Group Headers and Footers 사용자 지정 그룹 머리글 및 바닥 글

You can define a custom header view for PSGroupSpecifier segments by adding a Key attribute and implementing the following method in your IASKSettingsDelegate :PSGroupSpecifier 에서 Key 특성을 추가하고 다음 메서드를 구현하여 PSGroupSpecifier 세그먼트에 대한 사용자 지정 헤더보기를 정의 할 수 있습니다.

 - (UIView *)settingsViewController:(id<IASKViewController>)settingsViewController tableView:(UITableView *)tableView viewForHeaderForSection:(NSInteger)section; 

You can adjust the height of the header by implementing the following method: 다음 메소드를 구현하여 헤더의 높이를 조정할 수 있습니다.

 - (CGFloat)settingsViewController:(id<IASKViewController>)settingsViewController tableView:(UITableView*)tableView heightForHeaderForSection:(NSInteger)section; 

For simpler header title customization without the need for a custom view, and provided the -settingsViewController:tableView:viewForHeaderForSection: method has not been implemented or returns nil for the section, implement the following method: 사용자 정의보기가 필요없는 간단한 헤더 제목 사용자 정의를 위해 -settingsViewController:tableView:viewForHeaderForSection: 메소드가 구현되지 않았거나 섹션에 대해 nil 을 반환하는 경우 다음 메소드를 구현하십시오.

 - (NSString *)settingsViewController:(id<IASKViewController>)settingsViewController tableView:(UITableView*)tableView titleForHeaderForSection:(NSInteger)section; 

If the method returns nil or a 0-length string, the title defined in the .plist will be used. 메서드가 nil 또는 길이가 0 인 문자열을 반환하면 .plist 정의 된 제목이 사용됩니다.

This behaviour is similar to custom table view cells. 이 동작은 사용자 지정 테이블보기 셀과 유사합니다. When implementing a method and if you need it, the section key can be retrieved from its index conveniently with: 메소드를 구현하고 필요할 경우 섹션 키는 다음과 함께 인덱스에서 편리하게 검색 할 수 있습니다.

 NSString *key = [settingsViewController.settingsReader keyForSection:section]; 

Check the demo app for a concrete example. 데모 앱에서 구체적인 예를 확인하십시오.

For footer customization, three methods from the IASKSettingsDelegate protocol can be similarly implemented. 바닥 글 사용자 정의의 경우 IASKSettingsDelegate 프로토콜의 세 가지 방법을 유사하게 구현할 수 있습니다.

Custom ViewControllers 사용자 정의 ViewController

For child pane elements ( PSChildPaneSpecifier ), Apple requires a file key that specifies the child plist. 자식 창 요소 ( PSChildPaneSpecifier )의 경우 Apple plist에는 자식 plist를 지정하는 file 키가 필요합니다. InAppSettingsKit allow to alternatively specify IASKViewControllerClass and IASKViewControllerSelector . InAppSettingsKit은 IASKViewControllerClassIASKViewControllerSelector 를 교대로 지정할 수있게합니다. In this case, the child pane is displayed by instantiating a UIViewController subclass of the specified class and initializing it using the init method specified in the IASKViewControllerSelector . 이 경우 지정된 클래스의 UIViewController 하위 클래스를 인스턴스화하고 IASKViewControllerSelector 지정된 init 메서드를 사용하여 초기화하면 자식 창이 표시됩니다. The selector must have two arguments: an NSString argument for the file name in the Settings bundle and the IASKSpecifier . 선택기에는 Settings 번들의 파일 이름에 대한 NSString 인수와 IASKSpecifier 라는 두 개의 인수가 있어야합니다. The custom view controller is then pushed onto the navigation stack. 그런 다음 사용자 정의보기 컨트롤러가 탐색 스택으로 푸시됩니다. See the sample app for more details. 자세한 내용은 샘플 앱을 참조하십시오.

Using Custom ViewControllers from StoryBoard StoryBoard의 사용자 정의 ViewController 사용

Alternatively specify IASKViewControllerStoryBoardId to initiate a viewcontroller from main storyboard . 또는 IASKViewControllerStoryBoardId 를 지정하여 메인 스토리 보드 에서 viewcontroller를 시작하십시오. Specifiy IASKViewControllerStoryBoardFile to use a story board other than MainStoryboard file. MainStoryboard 파일 이외의 스토리 보드를 사용하도록 IASKViewControllerStoryBoardFile 을 지정하십시오.

Perform Segues 단편 공연

As an alternative to IASKViewControllerClass and IASKViewControllerSelector for child pane elements ( PSChildPaneSpecifier ), InAppSettingsKit is able to navigate to another view controller, by performing any segue defined in your storyboard.IASKViewControllerSelector 은 하위 창 요소 ( PSChildPaneSpecifier )에 대한 IASKViewControllerClassIASKViewControllerSelector 의 대안으로 스토리 보드에 정의 된 임의의 세그먼트를 수행하여 다른보기 컨트롤러로 이동할 수 있습니다. To do so specify the segue identifier in IASKSegueIdentifier . 그렇게하려면 IASKSegueIdentifier 에서 segue 식별자를 지정하십시오.

Subtitles 자막

The IASKSubtitle key allows to define subtitles for these elements: Toggle, ChildPane, OpenURL, MailCompose, Button.IASKSubtitle 키를 사용하면 Toggle, ChildPane, OpenURL, MailCompose, Button 등의 요소에 대한 자막을 정의 할 수 있습니다. Using a subtitle implies left alignment. 자막 사용은 왼쪽 정렬을 의미합니다. A child pane displays its value as a subtitle, if available and no IASKSubtitle is specified. 자식 창은 해당 값을 부제목으로 표시합니다 (사용 가능한 경우 IASKSubtitle 이 지정되지 IASKSubtitle ).

Placeholder 자리 표시 자

The IASKPlaceholder key allows to define placeholder for TextField and TextView ( IASKTextViewSpecifier ).IASKPlaceholder 키를 사용하면 TextField 및 TextView ( IASKTextViewSpecifier )의 자리 표시자를 정의 할 수 있습니다.

Text alignment 텍스트 정렬

For some element types, a IASKTextAlignment attribute may be added with the following values to override the default alignment: 일부 요소 유형의 경우 IASKTextAlignment 속성을 다음 값과 함께 추가하여 기본 정렬을 대체 할 수 있습니다.

  • IASKUITextAlignmentLeft (ChildPane, TextField, Buttons, OpenURL, MailCompose)IASKUITextAlignmentLeft (ChildPane, TextField, Buttons, OpenURL, MailCompose)
  • IASKUITextAlignmentCenter (ChildPane, Buttons, OpenURL)IASKUITextAlignmentCenter (ChildPane, Buttons, OpenURL)
  • IASKUITextAlignmentRight (ChildPane, TextField, Buttons, OpenURL, MailCompose)IASKUITextAlignmentRight (ChildPane, TextField, 버튼, OpenURL, MailCompose)

Variable font size 가변 글꼴 크기

By default, the labels in the settings table are displayed in a variable font size, especially handy to squeeze-in long localizations (beware: this might break the look in Settings.app if labels are too long!). 기본적으로 설정 표의 라벨은 가변 글꼴 크기로 표시됩니다. 긴 지역화에서는 특히 편리합니다 (주의 : 라벨이 너무 길면 Settings.app의 모양이 손상 될 수 있음). To disable this behavior, add a IASKAdjustsFontSizeToFitWidth Boolean attribute with value NO . 이 동작을 사용하지 않으려면 NO 값으로 IASKAdjustsFontSizeToFitWidth 부울 특성을 추가하십시오.

Icons 아이콘

All element types (except sliders which already have a MinimumValueImage ) support an icon image on the left side of the cell. 모든 요소 유형 (이미 MinimumValueImage 가있는 슬라이더 제외)은 셀의 왼쪽에있는 아이콘 이미지를 지원합니다. You can specify the image name in an optional IASKCellImage attribute. 선택적 IASKCellImage 속성 IASKCellImage L 지 이름을 지정할 수 있습니다. The ".png" or "@2x.png" suffix is automatically appended and will be searched in the project. ".png"또는 "@ 2x.png"접미사가 자동으로 추가되고 프로젝트에서 검색됩니다. Optionally, you can add an image with suffix "Highlighted.png" or " Highlighted@2x.png " to the project and it will be automatically used as a highlight image when the cell is selected (for Buttons and ChildPanes). 필요에 따라 접미사 "Highlighted.png"또는 " Highlighted@2x.png "가있는 이미지를 프로젝트에 추가하면 셀을 선택할 때 하이라이트 이미지로 자동으로 사용됩니다 (버튼 및 하위 패널 용).

MultiValue Lists 다중 값 목록

MultiValue lists ( PSMultiValueSpecifier ) can fetch their values and titles dynamically from the delegate instead of the static Plist. MultiValue 목록 ( PSMultiValueSpecifier )은 정적 Plist 대신 대리자에서 동적으로 값과 제목을 가져올 수 있습니다. Implement these two methods in your IASKSettingsDelegate :IASKSettingsDelegate 에서 다음 두 가지 메소드를 구현하십시오.

 - (NSArray*)settingsViewController:(IASKAppSettingsViewController*)sender valuesForSpecifier:(IASKSpecifier*)specifier; - (NSArray*)settingsViewController:(IASKAppSettingsViewController*)sender titlesForSpecifier:(IASKSpecifier*)specifier; 

The sample app returns a list of all country codes as values and the localized country names as titles. 샘플 앱은 모든 국가 코드 목록을 값으로, 현지화 된 국가 이름을 제목으로 반환합니다.

MultiValue lists can be sorted alphabetically by adding a true Boolean DisplaySortedByTitle key in the Plist. MultiValue 목록은 Plist에 true Boolean DisplaySortedByTitle 키를 추가하여 사전 순으로 정렬 할 수 있습니다.

Settings Storage 설정 저장

The default behaviour of IASK is to store the settings in [NSUserDefaults standardUserDefaults] . IASK의 기본 동작은 [NSUserDefaults standardUserDefaults] 설정을 저장하는 것입니다. However, it is possible to change this behavior by setting the settingsStore property on an IASKAppSettingsViewController . 그러나 IASKAppSettingsViewController 에서 settingsStore 속성을 설정하여이 동작을 변경할 수 있습니다. IASK comes with two store implementations: IASKSettingsStoreUserDefaults (the default one) and IASKSettingsStoreFile , which read and write the settings in a file of the path you choose. IASK에는 IASKSettingsStoreUserDefaults (기본값)와 IASKSettingsStoreFile IASKSettingsStoreUserDefaults 두 가지 저장소 구현이 있습니다. IASKSettingsStoreUserDefaults 은 선택한 경로의 파일에서 설정을 읽고 씁니다. If you need something more specific, you can also choose to create your own store. 좀 더 구체적인 것을 필요로한다면 자신 만의 상점을 만들 수도 있습니다. The easiest way to create your own store is to create a subclass of IASKAbstractSettingsStore . 사용자 고유의 상점을 작성하는 가장 쉬운 방법은 IASKAbstractSettingsStore 의 서브 클래스를 작성하는 IASKAbstractSettingsStore 입니다. Only 3 methods are required to override. 3 가지 방법 만 재정의해야합니다. See IASKSettingsStore.{h,m} for more details. 자세한 내용은 IASKSettingsStore.{h,m} 을 참조하십시오.

Notifications 알림

There's a kIASKAppSettingChanged notification that is sent for every changed settings key. 변경된 모든 설정 키에 대해 보내지는 kIASKAppSettingChanged 알림이 있습니다. The object of the notification is the sending view controller and the userInfo dictionary contains the key and new value of the affected key. 알림 object 는 보내는보기 컨트롤러이며 userInfo 사전에는 영향을받는 키의 키와 새 값이 들어 있습니다.

Dynamic cell hiding 동적 셀 숨기기

Sometimes, options depend on each other. 때때로 옵션은 서로에 의존합니다. For instance, you might want to have an "Auto Connect" switch, and let the user set username and password if enabled. 예를 들어 "자동 연결"스위치를 사용하고 사용자가 사용자 이름과 비밀번호를 사용할 수있게 설정하도록 할 수 있습니다. To react on changes of a specific setting, use the kIASKAppSettingChanged notification explained above. 특정 설정의 변경에 대응하려면 위에서 설명한 kIASKAppSettingChanged 알림을 사용하십시오.

To hide a set of cells use: 셀 집합을 숨기려면 다음을 사용하십시오.

 - (void)[IASKAppSettingsViewController setHiddenKeys:(NSSet*)hiddenKeys animated:(BOOL)animated]; 

or the non-animated version: 또는 애니메이션이 아닌 버전 :

 @property (nonatomic, retain) NSSet *hiddenKeys; 

See the sample app for more details. 자세한 내용은 샘플 앱을 참조하십시오. Note that InAppSettingsKit uses Settings schema, not TableView semantics: If you want to hide a group of cells, you have to include the Group entry as well as the member entries. InAppSettingsKit은 TableView 의미가 아닌 Settings 스키마를 사용합니다. 셀 그룹을 숨기려면 그룹 항목과 구성원 항목을 포함시켜야합니다.

More information 추가 정보

In the Dr. Touch podcast and the MDN Show Episode 027Ortwin Gentz talks about InAppSettingsKit.Dr. Touch PodcastMDN Show 에피소드 027 Ortwin Gentz 는 InAppSettingsKit에 대해 이야기합니다.

Support 지원하다

Please don't use Github issues for support requests, we'll close them. 지원 요청에 Github 문제를 사용하지 마십시오. 지원 요청을 마감 할 것입니다. Instead, post your question on StackOverflow with tag inappsettingskit . 대신 태그 inappsettingskit 하여 StackOverflow에 질문을 게시하십시오.

The License 라이센스

We released the code under the liberal BSD license in order to make it possible to include it in every project, be it a free or paid app. 우리는 무료 또는 유료 앱 이건간에 모든 프로젝트에 포함시킬 수 있도록 자유 BSD 라이센스에 따라 코드를 발표했습니다. The only thing we ask for is giving the original developers some credit. 우리가 요구하는 유일한 것은 원 개발자 에게 신용을 부여하는 것입니다. The easiest way to include credits is by leaving the "Powered by InAppSettingsKit" notice in the code. 크레딧을 포함시키는 가장 쉬운 방법은 코드에 "Powered by InAppSettingsKit"통지를 남기는 것입니다. If you decide to remove this notice, a noticeable mention on the App Store description page or homepage is fine, too. 이 알림을 삭제하기로 결정한 경우 앱 스토어 설명 페이지 나 홈페이지에서 눈에 띄는 언급도 좋습니다. To gain some exposure for your app we suggest adding your app to our list. 앱 노출을 늘리려면 앱 을 목록에 추가하는 것이 좋습니다.