Ios 在tableView中声明两个节,但只显示一个节
下面是关于表视图的Lynda.comIos 在tableView中声明两个节,但只显示一个节,ios,objective-c,Ios,Objective C,下面是关于表视图的Lynda.comiOS教程。我们正在做的演示应该是创建一个包含两个部分的表视图。这两个部分的数据是从控制器(即委托)的viewDidLoad方法中的plist文件导入的,正如您在下面看到的,我声明应该有两个部分,并给每个部分一个标题 然而,当我在模拟器中运行它时,只有第一部分(标题为“iOS课程”)出现在屏幕上(我无法向下滚动)。web\u课程部分不显示。从下面的代码中,您能解释一下为什么没有出现web\u课程部分吗 -(NSInteger)numberOfSectionsI
iOS
教程。我们正在做的演示应该是创建一个包含两个部分的表视图。这两个部分的数据是从控制器(即委托)的viewDidLoad
方法中的plist
文件导入的,正如您在下面看到的,我声明应该有两个部分,并给每个部分一个标题
然而,当我在模拟器中运行它时,只有第一部分(标题为“iOS课程”)出现在屏幕上(我无法向下滚动)。web\u课程
部分不显示。从下面的代码中,您能解释一下为什么没有出现web\u课程
部分吗
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0){
return @"iOS courses";
}else {
return @"web courses";
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0){
return courseDetails.count;
}else {
return webCourseDetails.count;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSURL *url = [[NSBundle mainBundle] URLForResource:@"courses" withExtension:@"plist"];
courseDetails = [NSDictionary dictionaryWithContentsOfURL:url];
justCourseNames = courseDetails.allKeys;
NSURL *urlWeb = [[NSBundle mainBundle] URLForResource:@"courses_web" withExtension:@"plist"];
webCourseDetails = [NSDictionary dictionaryWithContentsOfURL:urlWeb];
webCourseNames = webCourseDetails.allKeys;
}
它看起来像
webCourseDetails.count
在numberOfRowsInSection
方法中返回0
。这就是为什么它没有出现
可能是webCourseDetails
字典是nil
。在numberOfRowsInSection
中设置一个断点以验证这一点。这意味着问题在于:
NSURL *urlWeb = [[NSBundle mainBundle] URLForResource:@"courses_web"
withExtension:@"plist"];
webCourseDetails = [NSDictionary dictionaryWithContentsOfURL:urlWeb];
字典没有初始化,例如,因为plist文件不在那里。我按照您的建议设置了一个断点,该函数中的局部变量
webCourseDetails
表示有11个键/值对。在模拟器的底部,它显示了一行的上半部分,视图不允许我向下滚动查看它是什么,所以可能其他部分在那里,但出于某种原因,我无法滚动到它。实际上,在教程提供的代码中也发生了同样的事情(当我在我的机器上运行它时),即使它在视频中工作。