【问题标题】:Is it possible to select a row in a **previous** UITableview是否可以在 **previous** UITableview 中选择一行
【发布时间】:2009-09-23 13:00:02
【问题描述】:

是否可以在 previous 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];

}
}

我从字典文件中获取信息/提要,并且字典中的不同标签告诉我的 tableview 何时播放视频以及何时不播放视频 ( playVids )。

确切地说,我有一个开始屏幕,它会将您带到第二个屏幕,然后将您带到早晨锻炼屏幕,如果您从那里单击一个单元格,它将播放一个(每个单元格都不同)视频。我不能使用苹果的标准设计(带有上面的后退按钮),因为这个任务特别要求使用他们自己的设计。 这就是我创建自己的标签栏和后退按钮的原因。

我的后退按钮是这样的

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

CurrentLevel--;

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

因此,如果我在最后一个屏幕中,我只需弹出该屏幕即可返回上一个屏幕(早上锻炼)。实际上必须做的是弹出该屏幕并播放最后一个视频。我想我可以通过弹出最后一个屏幕然后在早上锻炼中选择先前单击的单元格来做到这一点。

对此有任何想法。

【问题讨论】:

    标签: iphone objective-c uitableview


    【解决方案1】:

    我不确定我是否完全理解您的问题。你能显示更多的代码吗?你有 3 个视图控制器,对吧?您是否使用带有推送/弹出的标准导航控制器模式从一个到另一个?看起来你可能不是,因为按钮的布局很奇怪。

    如果您按下后退按钮,则可以弹出视图 3 并自然地返回到视图 2(它仍然存在,因此视频应该仍然可以播放)所以我不明白您为什么需要搞砸视图 1 中的表格,以便找到它并使其再次显示。您应该能够挂接到 viewWillAppear 并执行与从视图 1 进入时相同的操作。

    如果您没有使用标准的导航控制器模式,那么这可能就是问题所在。从 UI 的角度来看,您可能无论如何都应该这样做 - 人们会期望标题栏中有一个标准的后退按钮。

    我很确定无论如何你的问题是可以解决的——例如,在创建对象引用时,你总是可以将对象引用从一个视图传递到另一个视图——但我认为你不需要求助于你想到的方法。

    编辑:阅读我看到您确实在使用 push/pop 的其他详细信息。所以你有一堆视图,当一个被弹出时,它会发现它下面的那个,对吧?因此,应该可以通过在控制器中实现 viewWillAppear 或 viewDidAppear 方法来做你想做的事情。当您的最终屏幕弹出时,如果我理解正确,它将显示能够播放电影的视图。在这种情况下,您的视图控制器将获得 viewWillAppear / viewDidAppear 消息 - 通过维护状态并接收这些消息,您可以实现逻辑来决定是否需要播放电影。而不是调用 didSelectRow。再次调用方法,您也许可以将电影播放内容放在自己的方法中,这样您就可以从 viewDidAppear 或 didSelectRow 调用...

    【讨论】:

    • 非常感谢您的回复。事实上,我确实有不止一个控制器。然而,这些在这里并不真正适用。我正在使用类似这样的向下钻取表。 iphonesdkarticles.com/2009/03/…。所以我使用一个控制器来控制表格视图。我的overlayview也有一个不同的控制器,带有视频(标题和底部栏)。我将编辑我的问题并添加一些更准确的代码。因为在这个评论框中,我认为阅读起来很痛苦;)。
    【解决方案2】:

    我也不确定我是否完全理解您的问题,但这听起来与我最近处理的问题相似。查看这篇关于在详细视图中使用向上向下箭头在父表中移动的帖子。我的应用程序基于相同的示例代码,因此您应该能够毫不费力地让它工作。

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

    【讨论】:

    • 这确实很相似,不同之处在于我的按钮在下一个 tableview 中被推到前一个的顶部;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2013-06-28
    相关资源
    最近更新 更多