2013-04-16 2 views
0

Я новичок в Objective c. У меня есть таблица с панелью поиска. Моя проблема в том, что когда я впервые нажал на ячейку в searchResultTable, она перешла к другому контроллеру представления, но когда я отменил поиск и сделал это снова и коснулся ячейки результата поиска, ничего не произошло. Может ли кто-нибудь помочь мне решить эту проблему? Вот некоторые из моего кода:Не удается перейти к новому контроллеру просмотра, нажав на ячейку поискаResultTable

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    UIViewController *newView = [[UIViewController alloc] init]; 
    if(tableView == self.tableView) { 
     [self.navigationController pushViewController:newView animated:YES]; 
     newView.title = [[listOfGroups objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]; 
    } 
    if(tableView == self.searchDisplayController.searchResultsTableView) { 
     [self.navigationController pushViewController:newView animated:YES]; 
     newView.title = [[searchData objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]; 
    } 

    [newView release]; 
} 

и здесь некоторый код в методе Viewdidload

searchDisplayController.delegate = self; 
searchDisplayController.searchResultsDataSource = self; 
self.searchDisplayController.searchResultsTableView.delegate = self; 

и вы можете разъяснить мне, как 3 строки кода выше работы, Что это означает ? Спасибо.

+0

Вы можете прочитать о делегатов [здесь] (http://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html). Эти строки настраивают searchDisplayController -> «спросите меня (' self') о всей необходимой вам информации ». 'self' является ссылкой на текущий VC. – DanSkeel

+0

@DanSkeel: Благодарю вас, вы можете решить проблему, которую я показал выше (выделен жирным шрифтом). – lncnb91

+1

В коде, который вы опубликовали, ничего не будет, что приведет к проблеме, о которой вы сообщаете. Вы должны сделать некоторые записи, чтобы узнать, что происходит. Вызывается второй раз? Вы делаете это в if, если tableView == self.searchDisplayController.searchResultsTableView clause? Является ли self.navigationController non nil? – rdelmar

ответ

0

Каждый вид таблицы в приложении необходимо иметь делегат и DATASOURCE, связанный с ним.

DATASOURCE реализует UITableViewDataSource протокол, который в основном состоит из целого ряда методов, которые определяют информацию заголовка, каким образом будет отображаться множество строк данных, как данные разделены на различные секции и, самое главное , предоставляет представление таблицы объектам ячейки для отображения.

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

Источник: http://www.techotopia.com/index.php/Creating_a_Simple_iPhone_Table_View_Application#The_Table_View_Delegate_and_dataSource

+0

спасибо, можете ли вы решить проблему, которую я показал выше (выделен жирным шрифтом). – lncnb91

+0

Установите точку останова в файле didSelectRowAtIndexPath, когда вы представляете контроллер вида и коснитесь ячейки результатов поиска. Является ли точка останова когда-либо попаданием? – RaffAl

+0

Он попал в первый поиск, но со второго поиска он этого не сделал. – lncnb91

Смежные вопросы