2012-12-06 66 views
0

我想實現一個searchDisplayController但我有一個問題。有一次,我過濾單元,當我所選擇的剩餘單元格我得到的文本的一個奇怪的堆棧:SearchDisplayControler,UILabel堆棧後選擇

http://postimage.org/image/4fswe8t8n/

這就像在一個我的所有細胞。

所以這是我的cellForRowAtIndexPath方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"MFriendCell"; 

UITableViewCell *cell = [tableView 
         dequeueReusableCellWithIdentifier:CellIdentifier]; 

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

if(tableView == self.tableView) { 
    UILabel *nameLabel = (UILabel *)[cell viewWithTag:201]; 
    nameLabel.text = [self.allItems objectAtIndex:indexPath.row]; 
} 
else if(tableView == self.searchDisplayController.searchResultsTableView) { 
    UILabel *labelName = [ [UILabel alloc ] initWithFrame:CGRectMake(50, 0.0, 150.0, 43.0) ]; 
    labelName.text = [self.searchResults objectAtIndex:indexPath.row]; 

    [cell addSubview:labelName]; 
} 
return cell; 
} 

我的過濾器:

- (void)filterContentForSearchText:(NSString*)searchText 
         scope:(NSString*)scope 
{ 
NSPredicate *resultPredicate = [NSPredicate 
           predicateWithFormat:@"SELF contains[cd] %@", 
           searchText]; 

self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate]; 
} 

,如果你有什麼事就問:)

+1

這是因爲你設置一張標籤 – Rajneesh071

+0

上一個新的標籤是不是因爲我的邏輯是壞的,或者我應該只是添加了一些檢查,如果已經有一個標籤? – BaNz

+0

你想添加不同的標籤或將您的文本設置爲以前的標籤 – Rajneesh071

回答

1

可以使標籤在你的tableView這樣

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"MFriendCell"; 

    UITableViewCell *cell = [tableView 
          dequeueReusableCellWithIdentifier:CellIdentifier]; 

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

    UILabel *nameLabel = (UILabel *)[cell viewWithTag:201]; 

    if(tableView == self.tableView) 
    { 
     nameLabel.text = [self.allItems objectAtIndex:indexPath.row]; 
    } 

    else if(tableView == self.searchDisplayController.searchResultsTableView) 
    { 
     labelName.text = [self.searchResults objectAtIndex:indexPath.row]; 
    } 
    return cell; 
} 
+1

謝謝,我做了很多你說的和它的工作 – BaNz

+0

你最歡迎的朋友.. :) – Rajneesh071

1

只需添加nameLabel細胞同樣喜歡labelName看下面的代碼..

if(tableView == self.tableView) { 
    UILabel *nameLabel = (UILabel *)[cell viewWithTag:201]; 
    nameLabel.text = [self.allItems objectAtIndex:indexPath.row]; 
    [cell addSubview:nameLabel]; ///YOU ARE Not add This Lable so Add this lable also 
} 
else if(tableView == self.searchDisplayController.searchResultsTableView) { 
    UILabel *labelName = [ [UILabel alloc ] initWithFrame:CGRectMake(50, 0.0, 150.0, 43.0) ]; 
    labelName.text = [self.searchResults objectAtIndex:indexPath.row]; 

    [cell addSubview:labelName]; 
} 

在你這裏didSelectRowAtIndexPath方法你剛剛拿self.allItems陣列的價值,而不是self.searchResults陣列,當你在searchResultTableView

試試這個代碼

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;{ 
    if(tableView == self.tableView) { 
     NSLog("\n Normal Table View Selected cell ==> %@",[self.allItems objectAtIndex:indexPath.row]); 

    } 
    else if(tableView == self.searchDisplayController.searchResultsTableView) { 
      NSLog("\n Search TableView Selected cell ==> %@",[self.searchResults objectAtIndex:indexPath.row];); 


    } 
} 

,也像波紋管numberOfRowsInSection方法集行.. 。

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    if(tableView == self.tableView) { 
      return [self.allItems count]; 

     } 
     else{ 
       return [self.searchResults count];  
     } 
} 

我希望這會幫助你...

+0

@BaNz you add [cell addSubview:labelName] ;但不添加像[cell addSubview:nameLabel];在if(tableView == self.tableView){this condition dude ..試試.. –

+0

感謝您試圖幫助我,但我認爲像Rajneesh071說,這是因爲我添加多個時間標籤到細胞的子視圖。 – BaNz

+0

是的兄弟,但這裏也有可能的問題,我告訴,也在這裏你看到你的標題最新的標籤,所以必須要添加當前的標籤上的細胞作爲子視圖右花花公子? –