uitextfield таможенной ячейки таблицы

Я составляю таблицу с тремя различными типами таможенной клетки, Одним из них, одна таможенная клетка имеет UITextField . Я создаю два ряда, используя эту таможенную клетку. Я установил признак и делегирую для textfields обоих рядов. Моя проблема, когда я завиваюсь стол, эти ряды с textfields перемещаются вверх и исчезают из экрана, когда прокручивают вниз, то время, мое приложение получает катастрофу. Я получаю ошибку как

-[CellImageViewController txtField]: unrecognized selector sent to instance 0xa0ea5e0

Here is my code for cellForRowAtIndexPath:

if (indexPath.row == 0 )
        {
            if (cell == nil) {
                cell = [[[CellWithTextFieldViewController alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID] autorelease];
            }

            cell.txtField.tag =1;

            cell.txtField.delegate = self;
            cell.txtField.text = @"kjfkd";
            }


            return cell;

        }
        else if(indexPath.row==1)
        {
            if (cell == nil) {
                cell = [[[CellWithTextFieldViewController alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID] autorelease];
            }

           cell.txtField.tag = 2;
           cell.txtField.text = @"glk";
           cell.txtField.delegate = self;

          return cell;
     }

У кого-либо есть идея об этой проблеме?

1
проблема решена теперь??
добавлено автор Paras Joshi, источник
да... Решенный..
добавлено автор user7388, источник

8 ответы

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

Попробуйте это:

customOrNormalCell *cell [tableView dequeueReusableCellWithIdentifier:CellIdentifier]
if(!cell){
    cell = [[CellWithTextFieldViewController alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[NSString stringWithFormat:@"%i", indexPath.row]];
}

С этим кодом каждый cellIdentifier будет 1,2,3,4... (Все отличающиеся)

Я вполне уверен, что это будет решать проблему

1
добавлено

Я также столкнулся с этой проблемой в своем проекте.

просто попробуйте это:

Отключенный завивающаяся собственность в Tableview и создают scrollview. Тогда добавьте свой Tableview в вашем scrollview.

UITableView  *table=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 976, 395) style:UITableViewStylePlain];
[table setSeparatorStyle:UITableViewCellSelectionStyleNone];
UIScroll *scroll=[[UIScrollView alloc]initWithFrame:CGRectMake(24, 168, 978, 395)];
 [table setScrollEnabled:NO];

[scroll addSubview:table];
[self.view addSubview:scroll];
[scroll sendSubviewToBack:table];
0
добавлено

создайте UITextField , прежде чем создадут UITableView и Добавляют ваш объект Текстфилда в представлении Содержания клетки

[cell.contentView addSubview:yourTxtFieldOblect];
0
добавлено
создайте один пользовательский метод и поместите код инициализации UITextField и этого вызова метода, прежде чем создадут UITableView (Помещенный Только код инициализации, чтобы не добавить), и Добавляют, что это к клетке contentView ... пробует его.. может быть решают вашу проблему:)
добавлено автор iPatel, источник
да.. Я сделал это, но все еще получаю катастрофу
добавлено автор user7388, источник

В то время как завивание tableView ваша камера становится снова использованным. Вот почему textField исчезает. Попытайтесь использовать различный id клетки для различных таможенных клеток. Не забывайте давать тот же самый id в файле пера для идентификатора клетки

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *customCellOne = @"customCell1";
static NSString *customCellTwo = @"customCell2";
UITableViewCell *cell =nil;



if (0 == indexPath.row)
{
    cell = (CustomCellOne *)[tableView dequeueReusableCellWithIdentifier:customCellOne];

    if (nil == cell)
    {
       //Create custom cell one and do what ever you want

    }
}
else if (1 == indexPath.row)
{
    cell=(CustomCellTwo *)[tableView dequeueReusableCellWithIdentifier:customCellTwo];

    if (nil == cell)
    {
        //Create custom cell two and do what ever you want       
    }

}

return cell;

}

0
добавлено

почему вы, определяют клетку для каждого ряда?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d",indexPath.row];
 CellWithTextFieldViewController  *cell = (CellWithTextFieldViewController *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];


  if(cell == nil)
  {
    cell =[[[CellWithTextFieldViewController alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]autorelease];

    cell.txtField.tag = indexPath.row;
    cell.txtField.text = [SET TEXT FROM ARRAY];
    cell.txtField.delegate = self;
  }
}
0
добавлено
@Radhu. вы получаете катастрофу? можно ли приклеить обновленный код?
добавлено автор Irshad Mansuri, источник
нет... не работа: (
добавлено автор user7388, источник

Попробуйте это

     static NSString *cellIdentifier= @"Cell";

    CellWithTextFieldViewController *cell = (CellWithTextFieldViewController *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

        if (cell == nil) {
            cell = [[CellWithTextFieldViewController alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        }

        cell.txtField.tag =indexPath.row+1;

        cell.txtField.delegate = self;
        cell.txtField.text = @"kjfkd";

        return cell;
0
добавлено
не работа..: (
добавлено автор user7388, источник
@Radhu. вы получаете катастрофу? можно ли приклеить обновленный код?
добавлено автор Vishwa Patel, источник

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

0
добавлено

Я не знаю, может быть, когда снова использовано клетка, делегат textfield был освобожден. можете быть вы, может установить

  textfield.deleagate = self;

в CellWithTextFieldViewController.m

0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.