Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UITableView+;。plist&x2B;UINavigationController问题_Objective C_Ios_Ios4 - Fatal编程技术网

Objective c UITableView+;。plist&x2B;UINavigationController问题

Objective c UITableView+;。plist&x2B;UINavigationController问题,objective-c,ios,ios4,Objective C,Ios,Ios4,作为我的第一个应用程序,我正在尝试掌握简单的基于导航的钱币收藏应用程序 从.plist填充的数组中的索引有一些问题。普利斯特有191项记录;普通国家列表->项目0-字符串-阿尔巴尼亚。。。项目190-字符串-瓦努阿图 我将这些记录读入临时数组以填充UITableView NSString *countriesFile=[[NSBundle mainBundle]pathForResource:@"countries" ofType:@"plist"]; countries=[[NSArray a

作为我的第一个应用程序,我正在尝试掌握简单的基于导航的钱币收藏应用程序

从.plist填充的数组中的索引有一些问题。普利斯特有191项记录;普通国家列表->项目0-字符串-阿尔巴尼亚。。。项目190-字符串-瓦努阿图

我将这些记录读入临时数组以填充UITableView

NSString *countriesFile=[[NSBundle mainBundle]pathForResource:@"countries" ofType:@"plist"];
countries=[[NSArray alloc]initWithContentsOfFile:countriesFile];
此表视图包含节->洲

我的问题是:

当推到另一个nib时,它应该读取国家名称并在标题和标签中显示。的确如此,但只适用于欧洲国家。如果我接触其他大陆的国家,我会看到一些欧洲国家。请查看屏幕截图

点击欧洲国家->比利时,显示右侧

转到非洲科:

拍摄安哥拉和奥地利

安哥拉的指数是92。奥地利-1。但奥地利和安哥拉都是其本土的第二个牢房

问题出在哪里?会是什么


提前感谢。

我假设您正在使用
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(nsindepath*)indepath
来告知您何时单击了列表中的项目? 另外,您是否使用
[indexPath行]
(或
indexPath.row
)来计算您点击的行的索引

属性返回的是当前节中的行索引。它不会返回整个表的绝对行索引。因此,单击第一节中的索引2项或第二节中的索引2项并不重要,
row
在这两种情况下都将返回2

一个想法是稍微修改一下.plist文件。与其只有一个长长的国家数组,不如有一个代表大陆的父数组。然后,这个大陆数组中每个索引的对象都有另一个数组,该数组将保存其中的国家列表

-(void)tableView: (UITableView*)tableView didSelectRowAtIndexPath: (NSIndexPath*)indexPath
{
    NSUInteger section=[indexPath section];
    NSUInteger row=[indexPath row];
    NSString* countryName=[[plistArray objectAtIndex: section] objectAtIndex: row];
    //rest of code...
}

听起来您没有考虑indexPath的节值。indexPath有两部分,一部分和一行。在具有单个节的表中,通常只读取行值。在您的例子中,看起来您有一个分组表,因此需要同时读取数据位置的indexPath.section和indexPath.row

你想更改密码是什么意思?怎么用?数组->集合?我的方法现在看起来像:-(void)tableView:(UITableView)tableView DidSelectRowatineXpath:(NSIndexPath*)indexPath{nsInteger节=[indexPath节];nsInteger行=[indexPath行];NSString countryName=[[countries objectAtIndex:section]objectAtIndex:row];SelectedCountry*SelectedCountry=[[SelectedCountry alloc]initWithNibName:@“SelectedCountry”捆绑包:nil];SelectedCountry.SelectedCountry=[countryName objectAtIndex:Indexath.row];[self.navigationController pushViewController:SelectedCountry动画:是];[SelectedCountry发布];]它现在说:“NSString可能不会响应objectAtIndex”。我应该改变变量类型吗?为了什么?伙计们-)史蒂夫·乔布斯去世了。这是今年最悲伤的一次。至少对我来说是如此。P@Nathan例如.plist文件:。请检查(某种类型的)您的方法应该是什么样子的示例:。如注释中所述,您需要修改该方法,以便它可以读取上面我格式化的.plist文件。这有意义吗?每个大陆都是一个部分。因此,第0部分是欧洲。请查看任何UITable文档。