2011-12-15 5 views
0

Я делаю простое приложение, пытаясь ознакомиться с раскадрой и их использованием. Приложение загружается с начальным представлением таблицы, который заполняется с помощью метода AppDelegate.m doneFinishLaunchingWithOptions. Это прекрасно работает, поэтому нет проблем с этим.Отображение содержимого на новом представлении в зависимости от didSelectRowAtIndexPath

Следующий этап зависит от того, какая ячейка была нажата в моей таблице. Мне нужно представление с другим изображением, которое будет показано. В предыдущей жизни я бы создал новый .xib-файл для каждого из них и, возможно, закончил бы 100 .xib-файлов, каждый из которых имел бы другое изображение. Я бы использовал следующий код, чтобы показать это представление;

if (indexPath.row == 0) 
{ 
    UIViewController *controller = [[UIViewController alloc]initWithNibName:@"AlertViewController" bundle:nil]; 
    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self.navigationController pushViewController:controller animated:YES]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 
else if (indexPath.row == 1) 
{ 
// Show a different view 
} 

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

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

ответ

6

Предположит, у вас есть массив, содержащие элементы, просматриваемые в таблице. У вас может быть массив (называемый myArray) со строковыми элементами вроде этого ... item1, item2, item3, item4

В настоящее время они отображаются только на вашем столе.

Теперь, если вы вместо того, чтобы создать массив объектов (или структур), которые содержат как отображаемое имя и имя графического вы хотите отобразить

(item1, Graphic1), (ст.2, graphic2), (item3, graphic3), (item4, graphic4)

Теперь в методе didSelectRow, вы можете получить деталь, что они выбрали

selectedItem = [myArray objectAtIndex:indexPath.row]; 

И от того, что вы можете получить имя графического

selectedGraphic = selectedItem.graphicName; 

И теперь вы можете создать новый вид и придать ему графический

UIViewController *controller = [[UIViewController alloc] ....]; 
controller.graphic = [UIImage imageNamed:selectedGraphic]; 
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self.navigationController pushViewController:controller animated:YES]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

Примечание: Я понимаю, что controller.graphic не существует - я просто положить, что в, чтобы показать вам, где вы бы установите свое изображение. Как вы это делаете, это зависит от ваших других объектов и контроллеров, но, надеюсь, это даст вам представление. То же самое касается других фрагментов кода.

0
if (indexPath.row == 0) 
{ 
UIViewController *controller = [[UIViewController alloc]initWithNibName:@"AlertViewController" bundle:nil]; 
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[email protected]"xyz"; 
[email protected]"abc"; 
    . 
    . 
    . 

[self.navigationController pushViewController:controller animated:YES]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

сделать так ...

+0

Это для этикетки. Я хочу передать изображение в UIImageView. –

+0

То же самое, Paul, controller.second.image = firstview.image – d4ndym1k3

+0

Нет, это не сработает. Вероятно, мой вопрос недостаточно ясен. –

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