Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
Adem
6 / 6 / 0
Регистрация: 17.04.2009
Сообщений: 34
#1

Наследование UIButton - Objective-C

10.07.2011, 16:16. Просмотров 2206. Ответов 7
Метки нет (Все метки)

Здраствуйте.

Подскажите, пожалуйста, почему, когда я пытаюсь создать кнопку класса CustomButton, наследованного от UIButton, то получается нечто такое:

Наследование UIButton

(Слева кнопка CustomButton, справа UIButton).

Вот интерфейс и реализация CustomButton:
Objective-C
1
2
3
4
5
6
7
@interface CustomButton : UIButton {
    SystemSoundID toneSSID;
}
 
-(SystemSoundID)gettoneSSID;
 
@end
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@implementation CustomButton
 
-(id)init
{
    NSString *toneFilename = [NSString stringWithFormat:@"%d", [self.titleLabel.text intValue]];
    NSURL *toneURLRef = [[NSBundle mainBundle] URLForResource:toneFilename withExtension:@"wav"];
    AudioServicesCreateSystemSoundID((CFURLRef)toneURLRef, &toneSSID);
    return [super init];
}
 
-(SystemSoundID)gettoneSSID
{
    return toneSSID;
}
В Interface Builder'е я создаю стандартную кнопку и меняю её тип на свой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2011, 16:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Наследование UIButton (Objective-C):

UIButton bug? - Программирование iOS
steps2reproduce: В общем создаем UIButton, кладем в него картинку(у меня это было из ниба) Затем делаем - ; и видим - что текст...

UITableView & UIButton - Программирование iOS
Доброго времени суток. Возник вопрос у меня есть таблица с 3-мя ячейками мне нужно при выборе ячейки менять Title кнопки на тот текст...

Наследование в Objective C - Objective-C
У меня есть класс CustomCell, в котором объявлен прототип функции initDataCell. Тело функции описано в классах FolderCell,...

CoreData , наследование - Программирование iOS
Доброе время суток! Такой вопрос. У меня в модели есть объект "Person". Мне нужно составить таблицу из этих объектов, но чтобы каждый...

Наследование outlet - Программирование iOS
Привет. Ситуация есть два контроллера addStudController и infStudController (detalStud) и есть xid файл с представлением где разные поля...

Наследование класса, созданного в storyboard - Программирование iOS
Добрый день. Возник вопрос с наследованием. Есть приложение с двумя вкладками. На одной вкладке лежит коллекция А. Нужно на вторую...

7
Splitter
203 / 145 / 5
Регистрация: 13.01.2009
Сообщений: 554
19.07.2011, 14:43 #2
А что именно Вам не нравится?

Добавлено через 29 минут
в догонку, попробовал у себя и понял ), сделайте вот так:

Objective-C
1
2
3
4
5
6
7
8
9
10
-(id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder]){
        NSString *toneFilename = [NSString stringWithFormat:@"%d", [self.titleLabel.text intValue]];
        NSURL *toneURLRef = [[NSBundle mainBundle] URLForResource:toneFilename withExtension:@"wav"];
        AudioServicesCreateSystemSoundID((CFURLRef)toneURLRef, &toneSSID);
    }
 
    return self;
}
0
Adem
6 / 6 / 0
Регистрация: 17.04.2009
Сообщений: 34
19.07.2011, 17:32  [ТС] #3
Не работает, даже когда я просто создаю пустой класс, наследованный от UIButton, и меняю на него класс кнопки в IB.
0
Splitter
203 / 145 / 5
Регистрация: 13.01.2009
Сообщений: 554
19.07.2011, 19:14 #4
а что именно не работает? То что здесь описано создает кнопку кастомного типа и инитит звук внутри нее?
Опишите как именно Вы хотите чтобы оно работало
0
Adem
6 / 6 / 0
Регистрация: 17.04.2009
Сообщений: 34
20.07.2011, 09:50  [ТС] #5
Так я же в первом посту приложил скрин кастомной и обычной кнопок. У кастомной нет белого фона, и на нажатия она не реагирует.
0
Splitter
203 / 145 / 5
Регистрация: 13.01.2009
Сообщений: 554
20.07.2011, 12:17 #6
так бы и сказали, откуда же я знал, что слева - это кнопка, label как label...
В этом случаем можно сделать так, инитите кнопку таким образом

Objective-C
1
2
3
4
5
6
7
8
+(id)buttonWithType:(UIButtonType)buttonType{
    if (self = [UIButton buttonWithType:buttonType]){
        NSString *toneFilename = [NSString stringWithFormat:@"%d", [self.titleLabel.text intValue]];
        NSURL *toneURLRef = [[NSBundle mainBundle] URLForResource:toneFilename withExtension:@"wav"];
        AudioServicesCreateSystemSoundID((CFURLRef)toneURLRef, &toneSSID);
    }
    return self;
}
если Вам нужно чтобы она по нажатию вызывала какой-то свой внутренний метод тогда там можно дописать

C
1
[(UIButton *)self addTarget:self action:@selector(<method>) forControlEvents:UIControlEventTouchDown];
создавать такую кнопку из интерфейс билдера не получится, нужно это сделать програмно...

Objective-C
1
2
3
MButton *mButton = [MButton buttonWithType:UIButtonTypeRoundedRect];
    [mButton setFrame:CGRectMake(100, 100, 200, 40)];
    [self.view mButton];
Думаю можно сделать это и через IB но нужно покопаться в документации, посмотреть как именно он создает и инитит кнопку...
1
Adem
6 / 6 / 0
Регистрация: 17.04.2009
Сообщений: 34
20.07.2011, 14:58  [ТС] #7
Спасибо большое, попробую.

так бы и сказали, откуда же я знал, что слева - это кнопка, label как label...
А под картинкой в первом посте есть подпись
0
Splitter
203 / 145 / 5
Регистрация: 13.01.2009
Сообщений: 554
20.07.2011, 16:03 #8
Цитата Сообщение от Adem Посмотреть сообщение
А под картинкой в первом посте есть подпись
а слона то мы и не заметили )
Цитата Сообщение от Adem Посмотреть сообщение
Спасибо большое, попробую.
не за что
0
20.07.2011, 16:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2011, 16:03
Привет! Вот еще темы с ответами:

Xamarin & UIButton - Xamarin
Всем доброго времени суток. Вопрос состоит в том что у меня есть кнопка у нее два состояния InActive/Active. Когда она не активна на ней...

Заменить наследование классов на наследование интерфейсов - C++
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование шаблоном шаблона (наследование конструктора) - C++ Builder
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна в данном разделе т.к. у различных...

Наследование интерфейса и наследование реализации - C#
Начал читать книгу GoF и сразу же в предисловии попал в тупик. Чем отличается наследование интерфейса от наследования реализации? Что такое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru