2013-05-18 4 views
0

Я хочу передать id из таблицы (TableViewController) в другой вид (ViewController) после нажатия на ячейку таблицы. Я объявил раскадровки ID "ViewController" для ViewControllerОшибка синтаксиса при попытке установить значение свойства

Вот TableViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; 
     UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"]; 
     [email protected]"test"; 
     [self.navigationController pushViewController:viewController animated:YES]; 

} 

Здесь ViewController.h

@property (nonatomic) NSString *id; 

ViewController.m

- (void)viewDidLoad{ 
     id= [[NSString alloc] init]; 
} 

Но произошла ошибка синтаксиса: [email protected]"test";.

+0

Убедитесь, что вы создали и синтезировали переменную в обоих контроллерах представлений. –

+0

BTW - ваше имя вопроса полностью вводит в заблуждение. Ваш вопрос касается синтаксической ошибки. Это не имеет никакого отношения к тому, как передавать данные между контроллерами представлений. – rmaddy

ответ

4

id - зарезервированное слово в Objective-C. Не указывайте переменную или свойство id. Переименуйте его в другое.

Кроме того, ваша переменная viewController объявлена ​​как UIViewController. Нет id Недвижимость в UIViewController. Измените тип viewController на фактический тип (ViewController?).

ViewController *viewController = (ViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ViewController"]; 
+0

Получил это. Спасибо за вашу помощь! –

+0

Хотя, вероятно, не стоит называть свойство 'id', это действительно возможно (' id' является 'typedef', а не ключевым словом). Я немного удивлен, однако, что синтаксическая ошибка не находится в строке 'id = [[NSString alloc] init]', потому что синтезированное имя ivar будет '_id'. – omz

+0

@omz Относительно 'id' vs' _id' - это зависит от того, имеет ли OP '@sythensize id' или если они явно объявили ivar с именем' id'. – rmaddy

1

Проверьте ссылку ниже, охватывает эти основы для начинающих о том, как передавать данные между UITableViewController к другой точке зрения.

Storyboards Segue Tutorial: Pass Data Between View Controllers

Кстати, я не думаю, что вы можете использовать «идентификатор» в качестве имени свойства.

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