В вашем UIViewController
реализуйте:
- (MyObject *)valueForSelectedRow {
MyCell *cell = (MyCell *)[self.tableView cellForRowAtIndexPath:[self.tableView indexPathForSelectedRow]];
return cell.myObject;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Get value
MyObject *object = [self valueForSelectedRow];
// Update the label, assumed that _label is a pointer to a UILabel view object.
_label.text = object.myValue;
}
Когда вы хотите выдвинуть новый контроллер представления, вы просто набираете -valueForSelectedRow
, а затем используете это значение для нажатия на контроллер.
Предполагается, что у вас есть подкласс UITableViewCell
со свойством, установленным для некоторого объекта модели. Если у вас этого нет и вы просто задаете свойство text
, этот объект NSString
будет вашим объектом 'модели', хотя было бы легче, если бы ваши ячейки обрабатывали объекты пользовательской модели.
РЕДАКТИРОВАТЬ: Спасибо за редактирование вашего ответа. Теперь у меня есть информация, которая мне нужна. В этой строке: cell.textLabel.text = psystem.system_id
, вы настраиваете ячейку, просто устанавливая свойство текста textLabel
. Это то, что я описал в параграфе выше. Я всегда создаю подкласс UITableViewCell
со свойством, устанавливающим завершенный объект PSystem
. Когда вы присваиваете элемент PSystem
для ячейки, он будет обрабатывать его содержимое, так что вы сможете легко управлять своим представлением в виде представления. Это очень вынужденный подход, так как вам никогда не придется снова смотреть на контроллер, чтобы изменить содержимое представления.
Тем не менее, это может быть сделано так, как у вас сейчас есть. Это будет выглядеть примерно так:
- (NSString *)valueForSelectedRow {
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[self.tableView indexPathForSelectedRow]];
return cell.textLabel.text;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Get value
NSString *value = [self valueForSelectedRow];
// Update the label, assumed that _label is a pointer to a UILabel view object.
_label.text = value;
}
В этом случае ваша модель PSystem
была заменена объектом NSString
. Для этого достаточно, но гораздо проще получить сам объект. Хорошо, это также можно сделать, выбрав объект PSystem
снова из массива p_system
с помощью NSIndexPath
, но все станет сложнее, когда вы придете к более сложным представлениям таблиц.