gpt4 book ai didi

ios - 为 CarPlay 音频应用程序添加 UI

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:25:12 24 4
gpt4 key购买 nike

我正在我的 CarPlay 音频应用程序中添加一个列表(表格 View )。在 AppDelegate.m 中,我有

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
..........

[MPPlayableContentManager sharedContentManager].dataSource = self;
[MPPlayableContentManager sharedContentManager].delegate = self;

return YES;
}

我还在 AppDelegate.m 中实现了 MPPlayableContentDataSource 方法:

- (NSInteger)numberOfChildItemsAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row)
{
case 0:
return 3;

case 1:
return 2;

default:
return 4;
}
}

- (MPContentItem *)contentItemAtIndexPath:(NSIndexPath *)indexPath
{
MPContentItem *contentItem = [[MPContentItem alloc] initWithIdentifier:@"container"];
.................

return contentItem;
}

但是,应用程序在切换 (indexPath.row) 时崩溃,并显示“与 UITableView 一起使用的索引路径无效。传递给 TableView 的索引路径必须恰好包含两个指定部分和行的索引。如果可能,请在 UITableView.h 中使用 NSIndexPath 上的类别。我在这里做错了什么吗?提前致谢。

最佳答案

MPPlayableContentDataSource 使用 NSIndexPath 的方式与 UITableView 不同。要使 indexPath.row 正常工作,indexPath 必须恰好包含 2 个元素,但 numberOfChildItemsAtIndexPath: 可以使用包含 0 到 5 个元素的 indexPath 调用 - 这就是代码崩溃的原因

numberOfChildItemsAtIndexPath:通常应该描述您的导航树 - 为导航中的特定节点提供索引路径,它应该返回您可以从该节点导航到的节点数

一些修复代码的方法是:

- (NSInteger)numberOfChildItemsAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.length == 0) {
// In a root of our navigation we have 3 elements
return 3;
}
if (indexPath.length == 1) {
switch ([indexPath indexAtPosition:0]) {
case 0:
// After tapping first item on our root list we see list with 3 elements
return 3;
case 1:
// for second one we get list with 2 elements
return 2;
default:
return 4;
}
}
return 0;
}

我建议观看 WWDC 视频“为 CarPlay 启用您的应用”,尤其是来自 6:00 的视频他们展示了很好的例子。

关于ios - 为 CarPlay 音频应用程序添加 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45726467/

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