2016-12-19 4 views
0

this is what I wantСоздание кнопок в соответствии поиска с помощью UITextField в ИОС

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath 
{ 

self.searchText.text = [NSString stringWithFormat:@"%@",[_sortedArray objectAtIndex:indexPath.row]]; 
self.tableView.hidden = YES; 

[_selectednames addObject:_searchText.text]; 

    [self makeLabelsAndButtons:_selectednames]; 

    // } 

self.searchText.text = nil; 

} 


-(void)makeLabelsAndButtons:(NSMutableArray *)arrButton{ 

int y=10; 
int x=10; 

for (int i=0; i<[arrButton count]; i++) { 
    CGRect screenRect=[[UIScreen mainScreen]bounds]; 
    CGFloat screenWidth=screenRect.size.width; 

    // [_arrBtnStatus addObject:[NSNumber numberWithInt:i]]; 


    NSString *strNames=[arrButton objectAtIndex:i]; 
    CGSize stringsize=[strNames sizeWithAttributes: 
       @{NSFontAttributeName: [UIFont systemFontOfSize:12.0f]}]; 
    UIButton *btn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    CGFloat m=x+stringsize.width+30; 
    CGFloat n=screenWidth-20; 

    if (m<=n) { 
     btn.frame=CGRectMake(x, y,stringsize.width,stringsize.height); 
     x=x+stringsize.width +10; 

    } 
    else 
    { 
     y=y+stringsize.height+10; 
     x=20; 
     btn.frame=CGRectMake(x, y,stringsize.width,stringsize.height); 
     x=x+stringsize.width+10; 
    } 

    [btn setTitle:arrButton[i] forState:UIControlStateNormal]; 
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
    btn.tag=i; 
    [btn addTarget:self 
      action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

    btn.backgroundColor = [UIColor lightGrayColor]; 

    btn.layer.cornerRadius=10; 
    [btn.layer setMasksToBounds:YES]; 

    [self.buttonView addSubview:btn]; 
} 
+0

Обновите свой вопрос с помощью своего вывода, что вы хотите и что получите. –

+0

Пожалуйста, предоставьте нам дополнительную информацию. Где вы не видите новую кнопку? Почему вам нужны разные кнопки. Хорошая идея тоже была бы быстрой. –

+0

Я отредактировал свой вопрос с изображениями .... Теперь предложите что-нибудь – Nivesh

ответ

0

ли инициализирует массив selectednames всякий раз, когда клетка для строки в indexpath runs.i.e инициализировать массив в этом function.In таким образом, он будет добавлен только один пункт в соответствии с выбранной строки. В вашем коде вы добавляете объект к тому же массиву. То, почему он добавляет предыдущую кнопку также

+0

вы можете объяснить или изменить мой код. – Nivesh

+0

[_selectednames addObject: _searchText.text]; –

+0

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