2013-05-15 3 views
0

나는 결과가 전혀 없이이 기괴한이 기괴한와 싸우고있다. 이전에 Theos 'Tweak 템플릿을 사용하여 Tweak을 만들고 해당 디렉토리에 템플릿을 사용하여 하위 프로젝트를 만들어 PreferenceBundle을 추가 할 수있었습니다. Tweak을 실행하고 Settings.app에서 해당 페이지를 열면 지정자 목록 (수정할 필요가없는 "Awesome Switch 1"포함)이 크게 커집니다. 즉PreferenceBundle 실종 본문에있는 Specifiers (테오스) 응용 프로그램

가, 난 그냥 전혀 수정에 작은을하고 프로젝트를 생성하여이 화면을 얻을 것 :

enter image description here

지금, 오늘은 새 프로젝트 같은 방법으로 생성 (비틀기를 만들 우선 PreferenceLoader 프로젝트 두 번째), 아무런 도움없이이 결과를 얻으려고했다.

나는 6 시간 이상 이걸로 싸워왔다. 나는 두 개의 jailbroken 장치에서 그것을 시도했다. 나는 Theos를 제거하고 다시 설치했습니다. 컴퓨터를 리셋 했는데도 두 장치를 모두 재부팅 했으므로 화면에 환경 설정이 포함되어 있지 않습니다. 배경을 포함하고 있지만 지정자는 전혀 없습니다.

plist는 현재 다음과 같습니다. -lint을 실행할 때 나는 PLIST 도구는 구문 오류를 반환하지 않습니다되지해야합니다

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>items</key> 
    <array> 
     <dict> 
      <key>cell</key> 
      <string>PSGroupCell</string> 
      <key>label</key> 
      <string>Five First Page</string> 
     </dict> 
     <dict> 
      <key>cell</key> 
      <string>PSSwitchCell</string> 
      <key>default</key> 
      <true/> 
      <key>defaults</key> 
      <string>s</string> 
      <key>key</key> 
      <string>AwesomeSwitch1</string> 
      <key>label</key> 
      <string>Awesome Switch 1</string> 
     </dict> 
    </array> 
    <key>title</key> 
    <string>SomeFive</string> 
</dict> 
</plist> 

(. Five.plist PreferenceLoader 하위 프로젝트가 "5"라고합니다).

그리고 다음과 같습니다 .mm 환경 설정 :

이제
@interface PSListController 
-(id)loadSpecifiersFromPlistName:(id)name target:(id)tar; 
@end 

@interface FiveListController: PSListController 
{ 
    id _specifiers; 
} 
-(id)specifiers; 
@end 

@implementation FiveListController 
- (id)specifiers { 
    if(_specifiers == nil) { 
     _specifiers = [[self loadSpecifiersFromPlistName:@"Five" target:self] retain]; 
    } 
    return _specifiers; 
} 
@end 

// vim:ft=objc 

나는 파일이 존재하고 내가 확인 있기 때문에/라이브러리/PreferenceBundles에서 수동으로 존재하는 경우 제대로 읽고있는 당신이 제목을 변경할 수 있기 때문에 알고 위의 plist에서 키를 누르면 기본 설정 페이지의 navbar 제목에 반영됩니다. 제목을 읽는 원인이 무엇인지 모르지만 나머지 지정자는 읽지 않습니다.

나는 완전히 이것을 바보 취급합니다. PreferenceLoader 프로젝트에서 그런 이상한 동작을 본 적이 없으며, Theos 설정이나 다른 것을 변경하지 않았으므로 완전히 무작위로 시작한 것처럼 보입니다.

이 문제에 대한 도움을 주시면 감사하겠습니다.

+0

문제가 무엇인지 모르겠지만 내 앱과는 다른 두 가지가 있습니다. (1) 내 plist의 'defaults'값은 일반적으로 'com.mycompany.myappname'과 비슷합니다. 단지's'가 아닙니다. (2)'/ System/Library/PreferenceBundles /'아래에 디바이스의 pref 번들이 있고'/ Library/PreferenceBundles' 아래에 아무 것도 없습니다. 이들 중 하나가 효과가 있는지 확실하지 않습니다. – Nate

+0

그래, 템플릿은 그 값을 기대하는 모든 "자리 표시 자"에 넣으므로 기본 값은 관련이 없어야합니다./Library/PreferencesBundles는 PreferenceLoader 프로젝트 용으로 예약되어 있으므로 템플릿에 의해 설치되도록 지정되었습니다. –

답변

0

나는 그것을 알아 냈다.

문제는 환경 설정 .mm 파일에서 발생했습니다. 질문에 넣은 내용과이 내용을 비교하십시오.

@interface PSListController 
{ 
    id _specifiers; 
} 
-(id)specifiers; 
-(id)loadSpecifiersFromPlistName:(id)name target:(id)target; 
@end 

@interface NotifierSettingsListController: PSListController { 
} 
@end 

@implementation NotifierSettingsListController 
- (id)specifiers { 
    if(_specifiers == nil) { 
     _specifiers = [[self loadSpecifiersFromPlistName:@"NotifierSettings" target:self] retain]; 
    } 
    return _specifiers; 
} 
@end 

// vim:ft=objc 

나는 헤더를 사용하지 않으므로 사용할 항목을 선언해야합니다. 그러나 나는 그것을 잘못했다. _specifiers 및 내 PSListController 하위 클래스의 모든 메서드는 PSListController 자체, 내 하위 클래스에 넣어야합니다.