我正在制作一个简单的基于导航的应用程序,它可以向下钻取一个级别并每次显示一个新的xib文件。当我向下钻取一个级别时,我的屏幕显示为空白。我仍然在顶部有一个带有后退按钮的导航控制器,但是我的视图已加载。
这是我的代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
circle_area *subViewOneController = [[circle_area alloc] init];
UIViewController *tvc = subViewOneController;
if (indexPath.row == 0 && indexPath.section == 0) {
[[self navigationController] pushViewController:tvc animated:YES];
}
}
像我说的那样返回一个空白屏幕。
我的更新代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
circle_area *subViewOneController = [[circle_area alloc] init];
UIViewController *tvc = subViewOneController;
switch (indexPath.section) {
case 0:
switch (indexPath.row) {
case 0:
NSLog(@"section %i special button!", indexPath.section);
NSLog(@"row %i special button!", indexPath.row);
break;
default:
break;
}
break;
default:
break;
}
NSLog(@"section %i!", indexPath.section);
NSLog(@"row %i!", indexPath.row);
NSLog(tvc.view.recursiveDescription);
if (indexPath.row == 0 && indexPath.section == 0) {
[[self navigationController] pushViewController:subViewOneController animated:YES];
}
[tvc release];
}
上次我在中间省略了开关时,看起来它们会影响任何东西,但这次我把它们包括在内。
答案 0 :(得分:2)
circle_area *subViewOneController = [[circle_area alloc] init];
在这一行中,您将创建circle_area
类的实例,并将其分配给名为subViewOneController
的指针。
UIViewController *tvc = subViewOneController;
在此行中,您将同一实例分配给名为tvc
的指针。该指针被定义为指向UIViewController
类的实例。
目前尚不清楚你在这里要做什么。什么是circle_area
?为什么冗余分配? circle_area
是UIViewController
的子类吗?如果不是,那就是问题,你应该被编译器警告过。
此外,您有内存泄漏。您为此circle_area
实例分配内存,但不释放它。