2009-08-13 4 views
1

Можно ли выбрать строку в previous UITableview. Я представил образцы изображений, чтобы получить более четкое представление о том, что происходит точно.Можно ли выбрать строку в ** предыдущем ** UITableview

http://img186.imageshack.us/img186/933/picture8a.png

http://img405.imageshack.us/img405/9327/picture9d.png

http://img200.imageshack.us/img200/5386/picture10thm.png

На экране утром тренировки, можно выбрать строку и позади нее, так что будет играть в кино. Если вы играете в кино, вы можете нажать вторую кнопку, и она вернет вас к финальному столу. Если вы нажмете кнопку, вы просто вернетесь к предыдущему экрану.

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

Так что если это возможно для меня создать функцию или какое-то действие, которое может фактически выбрать ранее выбранную строку из первого поля (например, Lunge Forward в этом примере). , возможно, с некоторыми, как

previousRow = [ self.tableView indexPathForSelectedRow]; 
[self tableView:[self tableView] didSelectRowAtIndexPath:previousRow]; 

просто делать что-то там

Даже если это не возможно, я был бы признателен, если бы кто-то дайте мне знать.

редактировать: Вот код позади ячейки, когда он собирается воспроизвести видео

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

//Get the dictionary of the selected data source. 
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row]; 

//check to see if video must be played 
NSString *playVids = [dictionary objectForKey:@"playVids"]; 

finalscreen = [dictionary objectForKey:@"finalScreen"]; 

if(playVids == nil) 
{ 
if(CurrentLevel != 0) 
{ 
if(finalscreen == nil) 
{ 
NSString *movies = [dictionary objectForKey:@"movieID"]; 
NSURL *movie = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:movies ofType:@"m4v"]]; 
theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movie]; 
[theMovie setOrientation:UIDeviceOrientationPortrait animated:NO]; 
[theMovie setScalingMode:MPMovieScalingModeAspectFit]; 
theMovie.backgroundColor = [ UIColor whiteColor]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(myMovieFinishedCallback:) 
name:MPMoviePlayerPlaybackDidFinishNotification 
    object:theMovie]; 

[theMovie play]; 
[self getToolBarStuff]; 

lblTitle.text = [dictionary objectForKey:@"Title"]; 
[[[UIApplication sharedApplication]keyWindow]addSubview:toolbar2]; 
[[[UIApplication sharedApplication]keyWindow]addSubview:imageView]; 
[[UIApplication sharedApplication]keyWindow]addSubview:lblTitle]; 
} 
} 

else 

{ 
WebViewController *web = [[WebViewController alloc] initWithNibName:@"WebView" bundle:[NSBundle mainBundle]]; 
[self.navigationController pushViewController:web animated:YES]; 
[web release]; 
} 
} 
else { 
//Prepare to tableview. 
rvController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:[NSBundle mainBundle]]; 

//Increment the Current View 
rvController.CurrentLevel += 1; 

//Set the title; 
rvController.CurrentTitle = [dictionary objectForKey:@"Title"]; 

//Push the new table view on the stack 
[self.navigationController pushViewController:rvController animated:YES]; 
rvController.tableDataSource = Children; 
[rvController release]; 

} 
} 

Я получаю мои данные/каналы из dictionaryfile, а также различные теги в моем словаре сказать мой TableView когда для воспроизведения видео, а когда нет (playVids).

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

Мой BackButton выглядит следующим образом

-(void)back_clicked:(id)sender 
{ 
[self.navigationController popViewControllerAnimated:YES]; 

CurrentLevel--; 

switch(CurrentLevel) { 
case 0; 
[toolbar removeFromSuperView]; 
default: 
break; 
} 
} 

Так что, если я нахожусь в последнем экране я просто поп, что экран, чтобы вернуться к моей предыдущей (утром тренировки). И что на самом деле нужно сделать, это поп-экран и воспроизведение последнего видео. Я думал, что смогу сделать это, вытащив последний экран, а затем выбрав ячейку с предварительно нажатой ячейкой в ​​утренней тренировке.

Любые мысли об этом.

ответ

1

Я не уверен, что я понимаю вашу проблему именно здесь. Можете ли вы показать немного больше кода? У вас есть 3 контроллера вида, верно? Используете ли вы стандартный шаблон контроллера навигации с push/pop для перехода от одного к другому? Похоже, что вы не с тех пор, как кнопки находятся в нечетном макете.

Если вы нажмете кнопку «Назад», вы можете просто поп-вид 3 и вернуться к просмотру 2, естественно (он все равно будет там, поэтому видео все равно будет воспроизводиться), поэтому я не понимаю, почему вам нужно с таблицей в поле зрения 1, чтобы найти это и снова показать его. Вы должны просто иметь возможность подключаться к viewWillAppear и делать то же самое, что и вы, когда поступаете из поля зрения.

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

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

Редактирование: чтение дополнительной детали Я вижу, что вы действительно используете push/pop. Итак, у вас есть стек взглядов, и когда он появляется, он раскрывает один под ним, не так ли? Поэтому вы должны делать то, что хотите, используя методы viewWillAppear или viewDidAppear в своем контроллере. Когда ваш последний экран выскочит, если я правильно пойму, он откроет представление, которое может воспроизводить фильм. Ваш viewcontroller получит сообщения viewWillAppear/viewDidAppear в этом случае - поддерживая состояние и получая эти сообщения, вы можете реализовать логику, чтобы решить, нужно ли вам играть в фильм. Вместо вызова didSelectRow. метод снова, вы могли бы поместить материал для воспроизведения фильма по своему собственному методу, чтобы вы могли позвонить либо из viewDidAppear, либо didSelectRow ...

+0

Большое спасибо за Ваш ответ. На самом деле у меня есть более одного контроллера. Однако здесь они не применяются. Я использую подобранный вид, похожий на этот. http://www.iphonesdkarticles.com/2009/03/drill-down-table-view-with-detail-view.html. Итак, я использую один контроллер для управления табличными представлениями. И есть также другой контроллер для моего оверлейного просмотра с видео (название и узел). Я собираюсь изменить свой вопрос и добавить код, чтобы быть более точным. Потому что в этом комментарии боль читается, я полагаю;). – 2009-08-13 12:15:32

0

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

Up/down arrows in nav bar of detail view to page through objects in parent table

+0

Это действительно симуляция с той разницей, что моя кнопка находится в следующем представлении таблицы, наложенном поверх предыдущего;) – 2009-08-13 16:35:59