2014-09-25 6 views
0

Я собираю эту настройку с теосом. Я пытаюсь сделать кнопку внутри центра управления на iPhone, что при нажатии вызывает список контактов. Что я делаю не так?Попытка показать список контактов (подборщик людей, как видно в AddressBook) при нажатии кнопки, что я делаю неправильно? (используя theos)

#import <UIKit/UIKit.h> 
#import <AddressBook/AddressBook.h> 
#import <AddressBookUI/AddressBookUI.h> 

@interface SBAppSliderScrollingViewController : UIViewController 
@property (nonatomic, strong) UIButton *button; 
-(void)loadView; 
@end 

%hook SBAppSliderScrollingViewController 

-(void)viewDidLoad { 
    %orig; 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [button setTitle:@"Contacts" forState:UIControlStateNormal]; 
    button.frame = CGRectMake(-25, 7, 150, 37); 
    [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:button]; 
} 

%new 
-(void)buttonPressed:(id)sender { 
    ABPeoplePickerNavigationController *peoplePicker = 
    [[ABPeoplePickerNavigationController alloc] init]; 
    peoplePicker.peoplePickerDelegate = self; 
    [self presentModalViewController:peoplePicker animated:YES]; 
} 

%end 

Это мой Makefile:

ARCHS = armv7 arm64 
include theos/makefiles/common.mk 

TWEAK_NAME = Contacts 
Contacts_FILES = Tweak.xm 
Contacts_FRAMEWORKS = UIKit 
Contacts_FRAMEWORKS = AddressBook 
Contacts_FRAMEWORKS = AddressBookUI 

include $(THEOS_MAKE_PATH)/tweak.mk 

after-install:: 
    install.exec "killall -9 SpringBoard; killall -9 backboardd" 

Это ошибка я получаю при компиляции твик с Теос:

Brandons-Mac:contacts root# make package 
Making all for tweak Contacts... 
Preprocessing Tweak.xm... 
Compiling Tweak.xm... 
Tweak.xm:26:37: error: assigning to 
     'id<ABPeoplePickerNavigationControllerDelegate>' from incompatible type 
     'CKTranscriptCollectionViewController *' 
     peoplePicker.peoplePickerDelegate = self; 
             ^~~~~ 
1 error generated. 
make[2]: *** [obj/Tweak.xm.d559d84f.o] Error 1 
make[1]: *** [internal-library-all_] Error 2 
make: *** [Contacts.all.tweak.variables] Error 2 
Brandons-Mac:contacts root# 

ответ

0

Вы реализовать методы Делегирование этого.?

Вы должны написать

@interface SBAppSliderScrollingViewController : UIViewController <ABPeoplePickerNavigationControllerDelegate > 

Теперь реализовать методы делегата ABPeoplePickerNavigationController

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{ 
    return YES; 
} 
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier 
{ 
    // ensure user picked a phone property 
    if(property == kABPersonPhoneProperty) 
    { 
     ABMultiValueRef phone = ABRecordCopyValue(person, property); 
     NSString *phn = (__bridge NSString *)ABMultiValueCopyValueAtIndex(phone, ABMultiValueGetIndexForIdentifier(phone, identifier)); 
     //Your phone no 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 
    else{ 

    } 
    /* Display message if selection is not a phone number */ 

     return NO; 
} 
-(void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

И вторая вещь, которую вы не должны использовать [self presentModalViewController:peoplePicker animated:YES]; использовать вместо

[self presentViewController:peoplePicker animated:YES completion:nil]; 
+0

я получил эту ошибку: HTTPS : //ghostbin.com/paste/m7vv7 –

+0

my tweak xm: https://ghostbin.com/paste/zorrr –