IB Actionsheet VS.запрограммированный лист действий - PullRequest
1 голос
/ 25 февраля 2011

Приветствую всех.

Я пытаюсь реализовать фреймворк Нейта Вайндера "ShareKit".Все прошло хорошо, до последнего шага.

У меня есть общая кнопка настройки в Interface Builder с именем "shareBtn"

В моем .h у меня есть:

-(IBAction)shareBtn;

В моем .m я настраиваю общий (рабочий) UIActionSheet:

Наверх Я использую ShareKit Framework: #import "SHK.h"

Для моей кнопки у меня есть это:

 -(IBAction)shareBtn {
         UIActionSheet *actionsheet = [[UIActionSheet alloc] 
                                       initWithTitle:@"Which do you prefer?"
                                       delegate:self 
                                       cancelButtonTitle:@"Cancel" 
                                       destructiveButtonTitle:@"Destuctive Button" 
                                       otherButtonTitles:@"Button 1", @"Button 2", @"Button 3", nil
                                       ];
         [actionsheet showInView:[self view]];
         [actionsheet release];

}

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"button %i clicked", buttonIndex );
}

Это прекрасно работает и отлично.Теперь, в соответствии с инструкцией на странице установки ShareKit, я должен поместить этот код, чтобы подключить лист действий к платформе sharekit:

- (void)myButtonHandlerAction
{
    // Create the item to share (in this example, a url)
    NSURL *url = [NSURL URLWithString:@"http://getsharekit.com"];
    SHKItem *item = [SHKItem URL:url title:@"ShareKit is Awesome!"];

    // Get the ShareKit action sheet
    SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

    // Display the action sheet
    [actionSheet showFromToolbar:navigationController.toolbar];
}

Это кажется довольно простым, и я поиграл с синтаксисом aнемного (используя self.toolbar и т. д.), и я просто изо всех сил пытаюсь понять концепцию и то, что мне не хватает.Я прочитал документацию для iOS по этому вопросу, я сослался на несколько книг, которые у меня есть, и много занимался поиском в Интернете.

Просто надежда может увидеть очевидную ошибку или помочь мне немного помочь.

Спасибо.

Вот что я пробовал и ошибки:

Первая попытка

 -(IBAction)shareBtn {
    // Create the item to share (in this example, a url)
    NSURL *url = [NSURL URLWithString:@"http://getsharekit.com"];
    SHKItem *item = [SHKItem URL:url title:@"ShareKit is Awesome!"];

    // Get the ShareKit action sheet
    SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

    // Display the action sheet
    [actionSheet showFromToolbar:navigationController.toolbar];
}

ОШИБКА: 'неопознанный навигационный контроллер'

/////// Вторая попытка ///////

 -(IBAction)shareBtn {
    // Create the item to share (in this example, a url)
    NSURL *url = [NSURL URLWithString:@"http://getsharekit.com"];
    SHKItem *item = [SHKItem URL:url title:@"ShareKit is Awesome!"];

    // Get the ShareKit action sheet
    SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

    // Display the action sheet
    [actionSheet self.toolbar];
}

////// ОШИБКА: «Ожидается»] «до».token '//////////

/////// Третья попытка ///////

 -(IBAction)shareBtn {
    // Create the item to share (in this example, a url)
    NSURL *url = [NSURL URLWithString:@"http://getsharekit.com"];
    SHKItem *item = [SHKItem URL:url title:@"ShareKit is Awesome!"];

    // Get the ShareKit action sheet
    SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

    // Display the action sheet
    [actionSheet self.toolbar];
}

////// ОШИБКА: 'Ожидается'] 'до'. 'token '//////////

/////// Четвертая попытка ///////

-(IBAction)shareBtn {
    UIActionSheet *actionsheet = [[UIActionSheet alloc] init];

    // Create the item to share (in this example, a url)
    NSURL *url = [NSURL URLWithString:@"http://getsharekit.com"];
    SHKItem *item = [SHKItem URL:url title:@"ShareKit is Awesome!"];

    // Get the ShareKit action sheet
    SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

    // Display the action sheet
    [actionsheet showInView:[self view]];
    [actionsheet release];
}

////// ОШИБКА: Неиспользуемая переменная 'actionSheet' ////////// ////// Приложение запускается, но как только всплывает лист действий, оно падает ///////

К вашему сведению: Страница установки ShareKit: [url = http://www.getsharekit.com/install/]ShareKit: Установить [/ url]

ТАКЖЕ: Я сейчас нахожусь в процессе чтения "Руководств по ранчо для больших ботаников - Программирование для iPhone".

Как способ обучения, я пытаюсь применить некоторые концепции, которые я изучал (некоторые из которых выходят за рамки моих текущих знаний).Я обычно понимаю конкретные ошибки, но не знаю, как реализовать это действие.

Что меня смущает в этом actionSheet, так это то, что он отлично работает с первым методом, который я изучил.Сейчас я пытаюсь расширить эти знания, используя платформу ShareKit Framework и заставляя ее выполнять.Это кажется очень прямым, и я просто очень обескуражен ...

Вот установка ShareKit (она говорит "В трех простых строках кода") ШАГ 4: http://www.getsharekit.com/install/

1 Ответ

4 голосов
/ 25 февраля 2011

Я все заработал!

Итоговый код:

-(IBAction)shareBtn {
    // Create the item to share (in this example, a url)
    NSURL *url = [NSURL URLWithString:@"http://getsharekit.com"];
    SHKItem *item = [SHKItem URL:url title:@"ShareKit is Awesome!"];

    // Get the ShareKit action sheet
    SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

    // Display the action sheet
    [actionSheet showInView:[self view]];
    [actionSheet release];
}

Я получил две глупости, одну из которых я не стал использовать с заглавной буквой S в actionSheet для showInViewили выпуск.Вторым было использование showInView: [self view]];вместо метода .toolbar.

Спасибо, я знал, что только небольшой совет поможет мне отладить.

...