gpt4 book ai didi

objective-c - 如何使用 "didSelectRowAtIndexPath:(NSIndexPath *)indexPath"方法

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:19 26 4
gpt4 key购买 nike

我的问题:当用户在某个单元格中选择一个播放器时,我希望与该播放器相关的其余信息显示在新的 View Controller 上

到目前为止,我的方法是这样的:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath   *)indexPath
{
IPlayerViewController *detailViewController = [[IPlayerViewController alloc] initWithNibName:@"IPlayerViewController.h" bundle:nil];
Player *playerF = [playerArray objectAtIndex:indexPath.row];
detailViewController.PlayerLabel.text=playerF.Name;

[self.navigationController pushViewController:detailViewController animated:YES];

}

但是,我在 IPlayerViewController 中创建的 PlayerLabel(并将 UILabel 连接到 Storyboard 中的标签)是空白的。

如果这看起来很眼熟,那是因为我正在学习以下教程,但试图添加我自己的东西。非常感谢! http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

编辑:我正在使用 Storyboard。然而,在预定义的方法中,xcode 附带了以下注释以使用 Nib Name 进行初始化,这让我很失望。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath   *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
*/

}

看来我应该使用 prepareForSegue。这是我在 didSelectRowAtIndexPath 中调用的方法还是忽略该方法?

最佳答案

如果您正在使用 Storyboard,那么很可能您不会看到对 -tableView:didSelectRowAtIndexPath: 的调用。如果您使用 segues 进入下一个 View ,那么您将需要使用 -prepareForSegue:sender: 参见:How to pass prepareForSegue: an object .


更新

您是否有从 TableView 单元格到详细 View Controller 的转接?

如果你有一个 segue,那么 -tableView:didSelectRowAtIndexPath: 不是你想要的。如果你有一个 segue,请在你的 TableView Controller 中创建一个 -prepareForSegue:sender: 方法。它看起来像:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
Player *player = [self.playerArray objectAtIndex:indexPath.row];

IPlayerViewController *destination = segue.destinationViewController;
destination.player = player;
}

当然假设 IPlayerViewController 有一个播放器属性。

希望对您有所帮助。

关于objective-c - 如何使用 "didSelectRowAtIndexPath:(NSIndexPath *)indexPath"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11751996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com