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

Objective-C

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
kvakvit
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 37
#1

Числа из TextField в CGFloat - Objective-C

21.12.2013, 14:47. Просмотров 2429. Ответов 24
Метки нет (Все метки)

Здравствуйте.
Пользователь вводит числа в поле, мне нужно сохранить эти значения в перменные типа CGFloat. Как можно сделать? Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 14:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Числа из TextField в CGFloat (Objective-C):

TextField - Objective-C
помогите плз ... есть 3 текст филда IBOutlet UITextField *q1; IBOutlet UITextField *q2; IBOutlet UITextField *q3; в первые...

AlertView и TextField - Программирование iOS
Здравствуйте, у меня есть таблица с кастомными ячейками, и alertview который содержит 2 текст филда, и объект который должен записываться в...

Данные из TextField в динамичной таблице - Программирование iOS
Добрый день. У меня есть таблица, количество ячеек которой может изменятся. В каждой ячейке имеется текстовое поле. Вот у меня возникает...

Изменение TextField в CollectionView с использованием биндов - Objective-C
Помогите пожалуйста разобраться с некоторыми полями в Binding Inspector! Есть CollectionView и автосозданная Вьюшка. В эу вьюшку...

Textfield и числа - Java
Здравствуйте. Подскажите как сделать. Есть два textfield. В один мы вводим вводим числа и сохраняем в массив, а во второй мы вводим...

TextField и числа - Java
btnstart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int a =...

24
kvakvit
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 37
25.12.2013, 01:21  [ТС] #16
Цитата Сообщение от mobidevelop Посмотреть сообщение
Это ужасно.


Это хорошо.

Парадокс, однако...
А чем это плохо? Просто не совсем понимаю зачем использовать NSNumber, когда нужен float. Ведь с типом float можно выполнять различного рода действия, а чтобы, к примеру, сложить 2 NSNumber`a, придется еще прописывать что-то.
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
25.12.2013, 01:38 #17
Я уже сказал - неуниверсальность, излишне длинный код. А тут еще и Magic Numbers...
0
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
25.12.2013, 11:51 #18
Цитата Сообщение от kvakvit Посмотреть сообщение
Просто не совсем понимаю зачем использовать NSNumber, когда нужен float.
Дело в том что NSNumber это объект соответственно его можно засунуть и в NSDictionary и в NSArray, а вот c float так не получиться, да и получить float с NSNumber далеко не титаническая задача. всего то надо:
Objective-C
1
myNumber.floatValue
Цитата Сообщение от kvakvit Посмотреть сообщение
В итоге сделал так.
во первых что такое i ? во вторых если у тебя несколько textField-ов, как ты писал раньше, почему ты всегда значения берешь с одного и того же объекта "TextField" или один outlet на все textField-ы назначен? Да и вообще если честно не понятно что делает твой код

Не по теме:

float1, float2, float3 ... очень информативные имена

0
kvakvit
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 37
25.12.2013, 22:02  [ТС] #19
Цитата Сообщение от Xavier Посмотреть сообщение
Дело в том что NSNumber это объект соответственно его можно засунуть и в NSDictionary и в NSArray, а вот c float так не получиться, да и получить float с NSNumber далеко не титаническая задача. всего то надо:
Objective-C
1
myNumber.floatValue
во первых что такое i ? во вторых если у тебя несколько textField-ов, как ты писал раньше, почему ты всегда значения берешь с одного и того же объекта "TextField" или один outlet на все textField-ы назначен? Да и вообще если честно не понятно что делает твой код

Не по теме:

float1, float2, float3 ... очень информативные имена

i - это шаг цикла. От i зависит TextField.

Не по теме:

Все имена тут выдуманны на ходу, ибо хотел показать лишь способ, которым сделал

0
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
25.12.2013, 22:15 #20
Цитата Сообщение от kvakvit Посмотреть сообщение
i - это шаг цикла.
Скинь тогда весь код цикла для большей информативности, ибо не понятно как textField зависит от i.
0
kvakvit
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 37
25.12.2013, 22:26  [ТС] #21
Цитата Сообщение от Xavier Посмотреть сообщение
Скинь тогда весь код цикла для большей информативности, ибо не понятно как textField зависит от i.
textField`ы лежат в массиве, на каждом шагу переменная textField является указателем на один из них.
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
25.12.2013, 23:20 #22
Чем такой огород городить, проще написать
Objective-C
1
2
3
float1 = [fields[0].text floatValue];
float2 = [fields[1].text floatValue];
float3 = [fields[2].text floatValue];
И кода меньше, и работает он быстрее. Говнокодить, так хоть оптимально
0
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
26.12.2013, 13:33 #23
Ради интереса попробовал реализовать все через KVO.

Сделал так:
1) создал 2 TextField-a в IB (можно и больше не суть важно)
2) соединил их все с outlet collection:

Objective-C
1
@property (strong, nonatomic) IBOutletCollection(UITextField) NSArray *tf;
3) так-же создал у моего контролера property NSMutableArray (туда складываются значения наших чисел введенных пользователем) :
Objective-C
1
2
3
4
5
@interface MYViewController ()
 
@property(nonatomic,strong)NSMutableArray *floats;
 
@end
4) в методе viewDidLoad моего контроллера назначил объекты массива floats наблюдателями за изменениями в textField
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.floats=[[NSMutableArray alloc]init];
    [self.tf enumerateObjectsUsingBlock:^(UITextField* obj, NSUInteger idx, BOOL *stop) {
        NSMutableString *fl=[[NSMutableString alloc]initWithFormat:@"%d",0];
        [self.floats addObject:fl];
        [obj addObserver:self.floats[idx] forKeyPath:@"text.floatValue" options:NSKeyValueObservingOptionNew context:nil];
    }];
    
    NSLog(@"done");
    // Do any additional setup after loading the view, typically from a nib.
}
Кстати оказалось что NSNumber я не могу использовать так как он immutable, так что пришлось для хранения чисел использовать NSMutableString.

5) добавил категорию для NSMutableString для отлова изменений
Objective-C
1
2
3
4
5
6
7
8
@implementation NSMutableString (observe)
 
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    NSNumber *newNumber=change[@"new"];
    [self setString:[NSMutableString stringWithFormat:@"%@",newNumber]];
}
 
@end
В итоге получаем массив с NSMutableString из них берем floatValue и получаем наши float числа для каждого textField которые потом можно использовать в вычислениях как угодно. И они автоматически изменяются если пользователь ввел новые числа в поле.

Как вариант ТС может использовать этот способ для "отлова" введенных пользователем чисел и дальнейшее их использование.

Интересует также мнение других целесообразно ли вообще использовать такой способ?
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
26.12.2013, 13:48 #24
Xavier, спасибо, порадовали.
KVO, Outlet collection etc. И все это для ответа на вопрос под заголовком "Числа из TextField в CGFloat". Ну учитывайте же уровень знаний собеседника ))))
Кстати,
Цитата Сообщение от Xavier Посмотреть сообщение
оказалось что NSNumber я не могу использовать так как он immutable
Кто мешает заменять их в Mutable Array? replaceObjectAtIndex:withObject: отменили?
0
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
26.12.2013, 13:51 #25
Цитата Сообщение от mobidevelop Посмотреть сообщение
спасибо, порадовали.
Ну хоть что то

Цитата Сообщение от mobidevelop Посмотреть сообщение
Кто мешает заменять их в Mutable Array? replaceObjectAtIndex:withObject: отменили?
чето я про это запамятовал
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 13:51
Привет! Вот еще темы с ответами:

Вывести числа в цикле на TextField - Java
Здравствуйте! Подскажите пожалуйста как вывести несколько чисел в цикле на TextField. Делаю так: for(int i=0; i<5; i++) ...

Из TextField в ArrayList и в другой TextField - Java
JButton btnAdd = new JButton("Добавить"); btnAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent...

TextField - Java
Всеп привет, интересует решение такой несложной проблемы: как с TextField можно считать все полностью, учитывая пробелы, ...

Scroll и textField - Java
Всем доброй ночи. Знающие люди, подскажите пожалуйста, можно ли добавить scroll на textfield, дабы нормально скролить текст? Если можно, то...


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

Или воспользуйтесь поиском по форуму:
25
Yandex
Объявления
26.12.2013, 13:51
Ответ Создать тему
Опции темы

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