Цикл UITextField's и хранить двойные значения - PullRequest
1 голос
/ 01 апреля 2012

У меня возникают проблемы с циклическим просмотром набора динамически создаваемых UITextFields и сохранением этих значений в виде двойного числа, которое будет добавлено в массив позже. Я все еще довольно новичок в программировании на obj-c, так что терпите меня, если этот вопрос кажется тривиальным. Благодарю. Это то, что я имею до сих пор.

NSMutableArray *textFieldCashArray = [[NSMutableArray alloc] init];
double textFieldCash;
for (int y=0; y<25; y++) {       
    UITextField *myLabel = (UITextField *)[self.view viewWithTag:y];            
    textFieldCash =  [myLabel.text doubleValue];
    [textFieldCashArray addObject:[NSNumber numberWithDouble:textFieldCash]];    
}

P.S и вот сообщение об ошибке, которое я получаю

Pro[962:b303] -[UIControl text]: unrecognized selector sent to instance 0x680f850
2012-04-01 16:05:46.305 iFinance Pro[962:b303] *** Terminating app due to uncaught      exception 'NSInvalidArgumentException', reason: '-[UIControl text]: unrecognized selector sent to instance 0x680f850'
*** Call stack at first throw:

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Я думаю, что здесь происходит то, что переменная цикла используется в качестве тега, и цикл начинается с нуля.viewWithTag ответит либо получателю, либо одному из его подпредставлений заданным тегом, поэтому, если основной вид контроллера представления имеет тег == 0 (что, вероятно, и так), ваш первый текстовый запрос отправляется в это представление верхнего уровня.

Попробуйте установить для тегов текстового поля ненулевое значение, начиная с SOME_OFFSET.Тогда в вашем цикле:

for (y=0; y<25; y++) {
     UITextField *myLabel = (UITextField *)[self.view viewWithTag:y+SOME_OFFSET]; 
     // ...
}
1 голос
/ 02 апреля 2012

Данх, безусловно, прав насчет причины и решения этой проблемы.Просто добавьте немного, таких случаев можно избежать, проверив класс перед кастом.

if ([[self.view viewWithTag:y] isKindOfClass:[UITextField class]]) {
    UITextField *myLabel = (UITextField *)[self.view viewWithTag:y];            
    textFieldCash =  [myLabel.text doubleValue];
    [textFieldCashArray addObject:[NSNumber numberWithDouble:textFieldCash]];
}
0 голосов
/ 02 апреля 2012

Сначала вы должны создать массив:

NSMutableArray *textFieldCashArray = [NSMutableArray array];

Редактировать Ваш журнал ошибок показывает, что вы получаете какой-то другой объект UIControl (например, UIBtton) вместо UITextField.Проверьте свои теги на xib (или алгоритм, если вы устанавливаете программно) и убедитесь, что объекты UITextField имеют соответствующие теги

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...