Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Adem
6 / 6 / 0
Регистрация: 17.04.2009
Сообщений: 34
1

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

10.07.2011, 16:16. Просмотров 2263. Ответов 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 bug?
steps2reproduce: В общем создаем UIButton, кладем в него картинку(у меня это...

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

CoreData , наследование
Доброе время суток! Такой вопрос. У меня в модели есть объект "Person". Мне...

Наследование outlet
Привет. Ситуация есть два контроллера addStudController и infStudController...

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

7
Splitter
203 / 145 / 16
Регистрация: 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 / 16
Регистрация: 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 / 16
Регистрация: 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 / 16
Регистрация: 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

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

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

Условия для UIButton
Добрый вечер, при разработке возник вопрос: На контроллере один Баттон и один...


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

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

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