Intereting Posts
Удаление около дубликатов с помощью основных данных и ансамблей (iCloud) Изменение размера UIButton с сенсорными событиями Приостановить подписку на обновления пользовательского интерфейса в фоновом режиме и перезапустить его на переднем плане? Как запустить процесс в фоновом потоке iOS Интеграция Game Center для iPhone? Производительность UIButton в UITableViewCell против UIView Рекомендуемый способ инъекции зависимостей с объектами, управляемыми CoreData? как узнать, что текущий контроллер представления находится в стеке навигации, но не в корневом Как записать текст в UITextView? iOS6 vs iOS7 Интерфейс интерфейса внешнего вида iOS: запутался в правильном использовании AppDelegate Как планировать UILocalNotification в каждый день или каждый третий день? Как определить, есть ли ссылка в тексте UILabel и сделать ее кликабельной – Swift Панель инструментов не отображается в JSQMessagesViewController UIScrollView с горизонтальной прокруткой, пейджинг с автозапуском

Как получить значение ключа в словаре после нажатия UITableViewCell в iOS?

Я пытаюсь настроить UITableView внутри UIViewController . Он отлично работает для меня.

Прежде всего, что я сделал:

1) Я получил ответ от сервера следующим образом:

 [{"email_id":"adas@faga.gs","id":66,"mobile_no":"1236547895","name":"asad","relation":"dsfs"},{"email_id":"raj@ghj.com","id":67,"mobile_no":"5632145412","name":"raj","relation":"xyz"},{"email_id":"surajsukale@gmail.com","id":68,"mobile_no":"8698819943","name":"suraj","relation":"self"}] 

2) Успешно отобразить 4 значения во всех словарях в ячейке прототипа.

т.е.: email_id , mobile_no , name и relation .

Примечание: Здесь я получаю 5 параметров в ответ, но я показываю только 4.

Вот что я сделал для этого:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [menuItems count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"EmergencyContactCell"; EmergencyContactCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary *content = [menuItems objectAtIndex:indexPath.row]; cell.name.text = content[@"name"]; cell.email.text = content[@"email_id"]; cell.mobile.text =content[@"mobile_no"]; cell.relation.text =content[@"relation"]; return cell; } 

и он отлично работает для меня.

Теперь, чего я хочу?

Когда я нажал на любую ячейку, я хочу получить конкретный идентификатор, который находится в этом словаре. Что я должен делать здесь:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"%ld",(long)indexPath.row); // What should i do here is my question ?? } 

Пожалуйста, любой может решить мою проблему. помощь будет заметна.

Я думаю, вы ищете что-то вроде

 NSDictionary *content = [menuItems objectAtIndex:indexPath.row]; NSNumber *number = content["id"]; 

Вам нужен простой тип данных, используйте соответствующее свойство, например:

 int iNumber = number.intValue; 
  - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath NSDictionary *content = [menuItems objectAtIndex:indexPath.row]; NSString *id = content[@"id"]; } 

Но я не могу понять, почему, хотя вы проанализировали значение в cellForRowAtIndexPath , вы все равно просите такую ​​же обработку в didSelectRowAtIndexPath ?

Напишите ниже код для метода didSelectRowAtIndexPath :

 NSDictionary *content = [menuItems objectAtIndex:indexPath.row]; NSString *id = content[@"id"]; 

Вы не указали id в списке, но можете получить к нему доступ. Потому что это в вашем словаре.

PLZ использовать это

  - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { int id = [[[menuItems objectAtIndex:indexPath.row]valueForKey:@"id"]intValue]; } 

Вы можете получить доступ к своим элементам меню так же:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSDictionary *yourItem = [menuItems objectAtIndex:indexPath.row]; }