2014-03-05 1 views
0

상단에 검색 표시 줄이있는 간단한 테이블보기 컨트롤러가 있습니다. 사용자가 입력을 시작하고 결과가 없으면 프로그래밍 방식으로 만든 UIButton을 표시합니다.Table View Controller에서 검색 할 때 UILabel과 비교하여 동적으로 생성 된 UIButton으로 화면 깜박임

이상한 점은 내가 입력하는 모든 문자와 함께 UIButton을 사용하면 화면이 새로 고침되고 단추의 텍스트가 다시 깜박이는 것을 볼 수 있다는 사실입니다. 매우 눈에 띄며 매끄럽지 않습니다. 따라서 사용자는 한 글자를 입력하고 "여기를 클릭하여 만듭니다"라고 말합니다. 그러나 각 글자를 입력하면 해당 텍스트가 다시 렌더링 된 것처럼 보입니다.

그러나 UILabel과 똑같이 입력하면 각 입력 된 문자로 다시 렌더링되지 않으며 매우 매끄 럽습니다.

사용자가 입력하는 이름이 존재하지 않으면 버튼을 클릭하면 사용자 이름이 만들어지기 때문에 버튼을 사용하는 이유가 있습니다. 나는 UILabel에 대한 선택자를 호출 할 수 없다고 생각 하나? 어떤 결과가 발견되지 않으면

아래의 방법에서

viewDidLoad: 

    self.createButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    //self.createButton = [[UIButton alloc] init]; 
    self.createButton.frame = CGRectMake(-15, 90, 300, 30); 
    [self.createButton addTarget:self action:@selector(createButtonWasTapped:) forControlEvents:UIControlEventTouchUpInside]; 
    self.createButton.backgroundColor = [UIColor clearColor]; 
    self.createButton.showsTouchWhenHighlighted = YES; 
    self.createButton.tintColor = [UIColor whiteColor]; 
    self.createButton.titleLabel.font = [UIFont systemFontOfSize:18.0]; 
    //self.createButton.opaque = NO; 
    self.createButton.hidden = YES; 
    [self.view addSubview:self.createButton]; 

에서, 나는 동적으로 버튼을 만드는거야 : 여기

내가있는 UIButton으로 사용하고 코드의

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
    self.nameAddSearchBar.showsCancelButton = YES; 

    _autocompleteFetchedResultsController = nil; 
    NSError *error; 
    if (![[self autocompleteFetchedResultsController] performFetch:&error]) 
    { 
     // Handle Error 
    } 
    else 
    { 
     [self.nameAddSearchTableView reloadData]; 
     [self.createButton setHidden:_autocompleteFetchedResultsController.fetchedObjects.count > 0]; 
     [self.createButton setTitle:[NSString stringWithFormat:@"Click Here to Create %@", self.nameAddSearchBar.text] forState:UIControlStateNormal]; 
... more code 
} 

버튼 선택기가 전화를 겁니다.

- (void)createButtonWasTapped:(id)sender 
{ 
    self.selectedName = self.nameAddSearchBar.text; 
    [self.delegate nameTextFieldTableViewController:self didSelectCell:self.selectedName]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 

} 

UILabel에서 셀렉터를 호출하는 방법을 찾을 수 없지만 가능한 경우 문제가 해결됩니다. 내가 할 수 없다면, 나는 왜 각 입력 된 문자로 내 "버튼"을 다시 렌더링하는지 이해해야합니다.

도움이 될 것입니다. 감사합니다,

+0

먼저 텍스트를 설정하고 버튼을 표시하려고합니까? – alex

+0

안녕하세요 알렉스 - 메시지 주셔서 감사합니다; 불행하게도 그것은 작동하지 않았다. .. 다른 어떤 생각? – amitsbajaj

답변

1

이것은 매우 쉬운 해결책이었습니다.

self.createButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

..이 변화의 깜박임이 중지 :

나는 정의에 둥근 사각형에서 버튼 유형을 변경 한! 이상하지만 내게 완벽하게 괜찮아!

+0

Storyboard에서 사용자 지정 애니메이션 및 사용자 지정 UIButton을 사용하여 긴장을 풀고이 문제가 발생했습니다. 그러나 시뮬레이터에서 변경 내용을 유지하려면 "내용 및 설정 재설정"을 선택해야했습니다. – vaticRite

+0

이상하게도 적어도 XCode 7.1.1에서는 Simulator에서 "Reset Content and Settings ..."(또는 그냥 종료하고 다시 시작해야합니다.) 할 때마다 다른 장치로 전환 할 때가 있습니다. – vaticRite

관련 문제