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

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0ff
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 3
#1

Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола? - Objective-C

28.02.2012, 13:45. Просмотров 1456. Ответов 6
Метки нет (Все метки)

Приветствую всех !
не сочтите за труд и просветите начинающего..
Изучаю C# и Objective C параллельно... если с первым все более менее понятно
то со вторым печально, поэтому я тут Итак..

1. Как в Obj C добраться до свойств какого нибудь контрола ?! из напр. кода обработчика Buttona(ниже)
Objective-C
1
2
3
4
5
6
7
8
- (IBAction)start:(id)sender 
{
 
 [textfield setIntValue:20]; // здесь мы в textfield установили значение 20, а как напр. мне добраться до
                             // параметров textfield`a из этого же обработчика кнопки ? напр. цвет текста..
                             // в С# это просто бы было - TextField.Font.Color = red; //(как то так)
                             // здесь же засада :( Объясните plz.
}
2. Как написать код в обработчике контрола(по аналогии с С#), вернее где он этот обработчик ???
если с кнопкой понятно более менее, то тут труба.. например как попасть в обработчик OnClick того же
TextField ? странный язык какой то..

3. Почему в теле одной программы переменные не видны ?
например если я объявлю int number = 200; в обработчике кнопки, то во втором обработчике (другая кнопка)
программа не знает о существовании переменной "number" ? может объявление этой переменной нужно вынести
за пределы обработчика ? тогда куда конкретно ? или как то дать понять программе что переменная имеет свойства
public ?



4.Можно ли в контролe ImageWell просто указать адрес в инете с картинкой ? (как нибудь типа
Код
ImageWell.Load(@"Http:\\blablabla.jpg"
или нужно писать тучу строк кода ?(смотрел в примерах) В других языках это намного проще...


извините за сумбурность и возможно неверные термины, я только начал изучение Obj C
(скорее всего вопросы несколько туповаты для специалиста, но тем не менее).

Заранее спасибо !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 13:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола? (Objective-C):

ObjC как обертка для C? - Objective-C
Доброго времени суток. Я не iOS/MacOS разработчик, мне нет дела до Xcode и яблочного API. Мне интересен сам язык Objective-C ибо в C++...

Как из дочерних форм добраться до методов и свойств контрола? - C++
не знаю как сформулировать вопрос для поисковика, поэнтому спрашиваю:) на диалоговой форме (усл. главная) расположен табктрл, переберая...

Как добраться до свойств принтера - Visual Basic
Вот нужно некоторые документы печатать двухсторонней печатью. Знаю в VB.Net там проще есть параметр типа PrintDouplex. А как быть на VB6,...

VBA Access: как добраться до контрола подчиненной формы - VBA
Доброго времени суток. Господа форумчане, подскажите. Есть ли способ добраться до конкретного контрола какой-либо подчиненной формы из...

Как узнать от какого контрола с какой формы пришел запрос? - Visual Basic
Кликая по Датагрид на одной форме ChoiceFirm, вызываем вторую Firms для редактирования содержимого этого грида. Но вызываемая форма Firms...

Есть у кого-нибудь прога для чтения курса USD с какого-нибудь сайта? - Visual Basic
См. сабж. Лень писать, если честно :)) Наверное, надо делать DOM-модель странички, потом её разбирать и т.д. ... Да и некогда...

6
xdozorx
15 / 16 / 1
Регистрация: 13.12.2009
Сообщений: 138
Записей в блоге: 1
28.02.2012, 21:31 #2
0ff, 1-е цвет текста textfield.textColor=[UIColor greenColor];
https://developer.apple.com в поиске UITextFiled, будет строчка шото типа Class reference, показано свойства класса. его методы
2-e Насколько я знаю у textfiled нету обработчика, ето как в шарпе текстбокс. Можно создать кнопку которая будет обрабатывать етот textfiled
3. Почему в теле одной программы переменные не видны ?
Я так подозровею что вы обьявляете переменную в функции(по вашему в обработчеке), оно и недолжно видеть. Есть файл .h в нем и обьвяляйте
По поводу 4-го незнаю
1
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.02.2012, 06:29 #3
1. Как и сказали, на developer.apple.com очень много полезного. Цвет шрифта - *.textColor, выставляем, используя класс UIColor.
ЗЫ
C++
1
2
3
4
int i = 100500;
...
setIntValue:i - BAD WAY.
myUITextField.text = [NSString stringWithFormat:@"%d", i]; - Good Way
2.
Цитата Сообщение от xdozorx
Насколько я знаю у textfiled нету обработчика, ето как в шарпе текстбокс. Можно создать кнопку которая будет обрабатывать етот textfiled
Нууу же, если Вы сам не знаете, могли бы хоть людей не путать.

Во первых, у UITextField есть делегат(протокол), есть множество методов которые делегат должен реализовать, которые опять же можно посмотреть на developer.apple.com(О textField протоколе).
Во вторых, никто Вам не запрещает повесить метод на определенное событие следующим образом:
Objective-C
1
2
3
4
5
6
7
8
9
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100,100,100,21)]; //Создали
[textField addTarget:self/*инстанс класса, отвечающий за реализацию селектора*/ action:@selector(onTap)/*вызываемый метод*/ forControlEvents:UIControlEventsTouchDown];/*событие для обычного клика(в iOS)*/
/*Добавляем на отображение*/
[yourView addSubview:textField];
...
/*Где нибудь реализуем метод*/
- (void)onTap {
   NSLog(@"Hi there!");
}

Не по теме:

xdozorx, Не вводите людей в заблуждение, пожалуйста... Почитайте описание класса UIControl(parent of UITextField)


Почему в теле одной программы переменные не видны ?
3.Ну это Вам нужно читать про область видимости и локальные переменные

4. UIImageView напрямую не поддерживает асинхронную загрузку картинок и отображение. Есть сторонние библиотеки, реализующие это, да и Вы сами сможете сделать это, но чувствую, Вам еще рановато думать об этом.
Можно впринципе закачать и показать картинку через:
Objective-C
1
2
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://asdasd.ru/asd.png"]]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
Но Это ПЛОХОЙ вариант, ибо dataWithContentsOfURL - синхронный метод.
Опять же:UIImageView

Если есть вопросы - создавайте темы и спрашивайте!
Если есть сомнения - ищите опровержения, либо подтверждения. Потому что много могут написать всякого...
1
0ff
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 3
29.02.2012, 12:51  [ТС] #4
большое спасибо что дали пояснения...
вот только ни один из вышеперечисленных примеров у меня не скомпилился - различные ошибки .. Я пока выясняю тонкости применительно к OSX среде, примеры же видимо к IOS.. разбираюсь дальше..

касаемо
Objective-C
1
2
3
4
int i = 100500;
// ...
setIntValue:i // - BAD WAY.
myUITextField.text = [NSString stringWithFormat:@"%d", i]; // - Good Way
не могли бы разъяснить почему вариант setIntValue - хреновая затея ?
и еще
Objective-C
1
2
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://asdasd.ru/asd.png"]]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
Но Это ПЛОХОЙ вариант, ибо dataWithContentsOfURL - синхронный метод.

а где асинхронный метод ? ведь при синхронном насколько я понял интерфейс встанет колом ?


Еще раз спасибо....
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.02.2012, 13:32 #5
Цитата Сообщение от 0ff Посмотреть сообщение
а где асинхронный метод ? ведь при синхронном насколько я понял интерфейс встанет колом ?
А нигде, насколько мне известно. Самому делать нужно

Цитата Сообщение от 0ff Посмотреть сообщение
почему вариант setIntValue - хреновая затея ?
Банально - семантика. Хотя некоторые книжки приводят в пример setIntValue. В этом ничего страшного нет, работать будет, но он же TEXT field, значит в нем должен лежать текст.
Но скорее всего у меня до сих пор привычка с iOS, там попросту нет данного метода.

Не по теме:

Нужно бороться с глупыми привычками, и юзать то, что есть...



Насчет ошибок - пробуйте не UI а NS префикс использовать.
Кнопочка спасибо ниже
1
0ff
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 3
29.02.2012, 14:17  [ТС] #6
начало доходить помаленьку но намного медленнее чем с С#

Правильно ли будет все типы переменных, контролы и т.п данные объявлять в заголовочном файле класса ? ( *.h)
вот такие напр.
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
#import <Foundation/Foundation.h>
@interface MyClass : NSObject 
{
@private
    
    IBOutlet NSTextField *show;
    IBAction PressMe:(id)sender;
    NSString *demo;
    int num;
    BOOL drawsBackground;
}
- (IBAction) nextClick:(id)sender;
@end
или это не "кошерно" ?

и еще - в чем разница ? и как правильнее ?
Objective-C
1
2
3
4
- (void) nextClick:(id)sender
{
    // код
}
или
Objective-C
1
2
3
4
- (IBAction) nextClick:(id)sender
{
    //код
}
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
01.03.2012, 05:23 #7
IBAction тот же void, но это прямое указание Xcodу, что данный метод используется в InterfaceBuilder'e.
Без IBOutlet'a или IBAction'a вы не сможете подключить через IB не UIЭлемент на форме, ни метод соответственно.

Объявлять или нет - это уже Вам решать. А так - это обычный заголовочный файл.
1
01.03.2012, 05:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2012, 05:23
Привет! Вот еще темы с ответами:

не могу добраться даже до свойств подключения. - Windows 7
Купил новый комп, поставил на него ОЕМную Windows7 64. Соединил со старым напряму, перетыкнув кабель от старого компа из маршрутизатора в...

Не могу добраться до свойств вложенной формы - MS Access
Уважаемые коллеги, приветствую! Столкнулся с небольшой проблемой. Представьте, что есть вложенная форма. Не подчиненная как обычно, а...

как программно проверить запуск какого нибудь приложение? - C#
Всем привет. Как программно проверить, запустилась ли программа Ворд ??? после этого мне надо делать какие нибудь действие. Хочу проверить...

Как поместить окно OpenGL внутрь какого-нибудь объекта? - Visual C++
Ребят помогите, а то я стаким впервые сталкиваюсь.(не опытный еще) Каким образом можно поместить окно OpenGL внутрь какого-нибудь...


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

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

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