0
我有一個UIButton
在UITableViewCell
。當點擊一個UIButton
時,我在數組中保存了tapped button標籤。因此,當我在UITableView
內使用UISearchController
進行搜索時,我得到了所需的輸出,但是在錯誤的單元格中選擇了所選按鈕。Tableview按鈕選擇錯誤搜索後
產品圖1 - 按鈕選擇和搜索
在PIC 1之後,我已經選擇屬於按鈕 「房間1」 ,但在搜索後,如圖2所示,輸出是正確的,但不應選擇按鈕。如何解決這個問題?
---- ----編輯實現
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (shouldShowSearchresult) {
return searchArray.count;
}
else
{
return roomNameArray.count;
}
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"roomCells";
cell = (roomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (shouldShowSearchresult) {
cell.roomName.text = [searchArray objectAtIndex:indexPath.row];
// cell.seatingCapacity.text = [NSString stringWithFormat:@"Seats %@ people",[seatingCapacityArray objectAtIndex:indexPath.row]];
cell.approval.text = @"Approval not required";
}
else
{
cell.roomName.text = [roomNameArray objectAtIndex:indexPath.row];
// cell.seatingCapacity.text = [NSString stringWithFormat:@"Seats %@ people",[seatingCapacityArray objectAtIndex:indexPath.row]];
cell.approval.text = @"Approval not required";
}
for (UIButton *slotButton in cell.timeslotScrollView.subviews) {
[slotButton removeFromSuperview];
}
UIButton *slotButton;
cell.timeslotScrollView.contentSize = CGSizeMake(500, 0);
cell.timeslotScrollView.scrollEnabled = YES;
cell.timeslotScrollView.showsHorizontalScrollIndicator = NO;
int buttonSpace = 10;
int buttonWidth = 68;
int buttonHeight = 35;
int yPosition = 0;
float xPosition = 0;
for (int i=0; i<timeSlotArray.count; i++) {
slotButton = [[UIButton alloc]init];
slotButton.frame = CGRectMake(xPosition, yPosition, buttonWidth, buttonHeight);
[slotButton setTitle:[NSString stringWithFormat:@"%@", timeSlotArray[i]] forState:UIControlStateNormal];
[slotButton setTitleColor:[UIColor colorWithRed:0.23 green:0.71 blue:0.29 alpha:1.0] forState:UIControlStateNormal] ;
slotButton.layer.borderWidth = 2;
slotButton.layer.borderColor = [UIColor colorWithRed:0.23 green:0.71 blue:0.29 alpha:1.0].CGColor;
slotButton.layer.cornerRadius = 3;
slotButton.tag = i;
slotButton.userInteractionEnabled = YES;
[slotButton addTarget:self action:@selector(didTap:) forControlEvents:UIControlEventTouchUpInside];
xPosition = slotButton.frame.origin.x+buttonWidth+buttonSpace;
if (cell.timeslotScrollView.subviews.count < timeSlotArray.count)
{
[cell.timeslotScrollView addSubview:slotButton];
}
}
NSArray *tempArray = cell.timeslotScrollView.subviews;
NSLog(@"%ld",tempArray.count);
return cell;
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cello forRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row==tappedButtonRowIndex)
{
for (int i = 0; i <cell.timeslotScrollView.subviews.count; i++)
{
UIView *view = [cell.timeslotScrollView.subviews objectAtIndex:i];
if ([view isKindOfClass:[UIButton class]])
{
UIButton *slotTempBtn = (UIButton *)view;
BOOL btnFound = false;
for (NSString *index in buttonSelectedArray)
{
if ([index integerValue]== slotTempBtn.tag)
{
btnFound = true;
break;
}
}
if (btnFound) {
[slotTempBtn setBackgroundColor:[UIColor greenColor]];
}
else
{
[slotTempBtn setBackgroundColor:[UIColor whiteColor]];
}
}
}
}
else
{
for (UIView *view in cell.timeslotScrollView.subviews)
{
if ([view isKindOfClass:[UIButton class]])
{
UIButton *slotTempBtn = (UIButton *)view;
[slotTempBtn setBackgroundColor:[UIColor whiteColor]];
}
}
}
cell.slotButtonDelegate=self;
}
搜索實現
-(void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
[self updateFilteredContentWithSearchText:searchController.searchBar.text];
[_roomTableView reloadData];
}
- (void)updateFilteredContentWithSearchText:(NSString*)searchText
{
[searchArray removeAllObjects];
for (NSString *room in roomNameArray)
{
NSRange nameRange = [room rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (nameRange.location != NSNotFound)
{
[searchArray addObject:room];
}
}
self.roomTableView.tableFooterView = [[UIView alloc]initWithFrame:CGRectZero];
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if (searchBar.text.length >= 1) {
shouldShowSearchresult = true;
}
else
{
shouldShowSearchresult = false;
}
[_roomTableView reloadData];
}
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
shouldShowSearchresult = false;
[_roomTableView reloadData];
}
請添加您的搜索實施和表格單元格創建代碼。 – Priyal
任何想法的傢伙? – user3310076