Форум программистов, компьютерный форум CyberForum.ru

Objective-C

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

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

28.02.2012, 13:45. Просмотров 1401. Ответов 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
(скорее всего вопросы несколько туповаты для специалиста, но тем не менее).

Заранее спасибо !
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 13:45     Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола?
Посмотрите здесь:
Objective-C ObjC как обертка для C?
Objective-C Отличия С++ от objC
Objective-C IDE для ObjC
Хочу начать программировать в objc. Опыта программирования нет. Что нужно? Objective-C
C++ Как из дочерних форм добраться до методов и свойств контрола?
Как добраться до свойств принтера Visual Basic
VBA VBA Access: как добраться до контрола подчиненной формы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xdozorx
15 / 16 / 1
Регистрация: 13.12.2009
Сообщений: 138
Записей в блоге: 1
28.02.2012, 21:31     Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола? #2
0ff, 1-е цвет текста textfield.textColor=[UIColor greenColor];
https://developer.apple.com в поиске UITextFiled, будет строчка шото типа Class reference, показано свойства класса. его методы
2-e Насколько я знаю у textfiled нету обработчика, ето как в шарпе текстбокс. Можно создать кнопку которая будет обрабатывать етот textfiled
3. Почему в теле одной программы переменные не видны ?
Я так подозровею что вы обьявляете переменную в функции(по вашему в обработчеке), оно и недолжно видеть. Есть файл .h в нем и обьвяляйте
По поводу 4-го незнаю
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.02.2012, 06:29     Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола? #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

Если есть вопросы - создавайте темы и спрашивайте!
Если есть сомнения - ищите опровержения, либо подтверждения. Потому что много могут написать всякого...
0ff
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 3
29.02.2012, 12:51  [ТС]     Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола? #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 - синхронный метод.

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


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

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

Не по теме:

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



Насчет ошибок - пробуйте не UI а NS префикс использовать.
Кнопочка спасибо ниже
0ff
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 3
29.02.2012, 14:17  [ТС]     Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола? #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
{
    //код
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2012, 05:23     Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола?
Еще ссылки по теме:
Как узнать от какого контрола с какой формы пришел запрос? Visual Basic
Visual Basic Есть у кого-нибудь прога для чтения курса USD с какого-нибудь сайта?
Не могу добраться до свойств вложенной формы MS Access
не могу добраться даже до свойств подключения. Windows 7
C# как программно проверить запуск какого нибудь приложение?

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

Или воспользуйтесь поиском по форуму:
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
01.03.2012, 05:23     Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола? #7
IBAction тот же void, но это прямое указание Xcodу, что данный метод используется в InterfaceBuilder'e.
Без IBOutlet'a или IBAction'a вы не сможете подключить через IB не UIЭлемент на форме, ни метод соответственно.

Объявлять или нет - это уже Вам решать. А так - это обычный заголовочный файл.
Yandex
Объявления
01.03.2012, 05:23     Затруднение с пониманием. Как в ObjC добраться до свойств какого-нибудь контрола?
Ответ Создать тему
Опции темы

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