2013-09-05 3 views
1

Я изо всех сил пытаюсь получить метод работы с iPhone-приложением, другие методы работают нормально, но этот действует.Ошибка создания метода для изменения UIButton

Я хочу передать две переменные методу, который обновляет заголовок кнопки. INT для указания кнопки и INT для ссылки на текст из NSMutablearray. Вот метод:

void buttonLabelChange(int buttonNumber, int nameNumber){ 
    if (buttonNumber == 1) { 
     [button1Outlet setTitle:[objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal]; 
    } else { 
     [button2Outlet setTitle:[objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal]; 
    } 
} 

Ошибка я получаю: «Использование необъявленной идентификатора" button1Outlet». Этот EXACT код ([button1Outlet SETTITLE ......) работает как шарм в разделе "viewDidLoad" ..

Мой .h файл содержит:

void buttonLabelChange(); 

Я bangning мой голова к стене в течение большей части дня, не может найти ничего полезного (что я понимаю ...) на Google. Предложения?


СПАСИБО ЗА ПОМОЩЬ!


Heres мой новый, рабочий код:

.m

- (void)buttonLabelChange:(int)buttonNumber name:(int)nameNumber{ 
    if (buttonNumber == 1) { 
     [button1Outlet setTitle:[objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal]; 
    } else { 
     [button2Outlet setTitle:[objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal]; 
    } 
} 

.h

void buttonLabelChange(); 

И называть его:

[self buttonLabelChange:1 name:randomP1]; 
+1

Это не метод, это функция. –

+0

Почему не метод ('- (void) buttonLabelChangeWithNumber: (int) buttonNumber nameNumber: (int) nameNumber')? – Wain

+0

Отмечено. Попытка использовать его как метод. Спасибо за предложение! – CarlAlex

ответ

3

ваш код является функцией переменного тока, а не объективно- c методом. попробуйте заменить

void buttonLabelChange(int buttonNumber, int nameNumber) 

с

- (void)buttonLabelChange:(int)buttonNumber name:(int)nameNumber 

как в .h и .m файлов.

+0

Это работает! Или, по крайней мере, я на шаг ближе. Теперь во время сборки я получаю команду «Undefined symbols for architecture i386»/«с ошибкой с кодом завершения 1». Первый вызов этого метода находится в viewDidLoad. – CarlAlex

+0

Позвольте мне добавить, что метод действительно работает! Но все еще немного раздражает сообщение «undefined symobls ..» .. СПАСИБО! – CarlAlex

+0

Ах, неопределенная ошибка символов - это боль. Много времени это потому, что он не может найти ссылку на фреймворк, поэтому убедитесь, что вы связали все фреймворки, которые вам нужны в редакторе проекта.Кроме того, если вы щелкните по ошибке, вы можете получить подробное описание проблемы. – davey555

1

Это потому, что вы поместили код в функцию, которая не является частью вашего объекта вида. Просто потому, что функция находится в том же файле реализации, что и код представления, не дает ему специального доступа к объекту представления.

Используйте метод просмотра вместо или передать экземпляр вида функции (ужасно, поскольку она требует обнажая точек, а также objectArray):

void buttonLabelChange(UIView *view, int buttonNumber, int nameNumber){ 
    if (buttonNumber == 1) { 
     [view.button1Outlet setTitle:[view.objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal]; 
    } else { 
     [view.button2Outlet setTitle:[view.objectArray objectAtIndex:nameNumber] forState:UIControlStateNormal]; 
    } 
} 
Смежные вопросы