Пытаясь показать список контактов (подборщик людей, как видно из AddressBook), когда я нажимаю кнопку, что я делаю не так? (используя теос)

Я собираю этот твик с теосом. Я пытаюсь сделать кнопку внутри центра управления на iPhone, которая при нажатии вызывает список контактов. Что я делаю неправильно?

#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

Это мой make-файл:

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"

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

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# 

1 ответ

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

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

@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];
Другие вопросы по тегам