这是我在这里的第一篇文章,虽然在这个社区成员的许多问题和答案的帮助下,我已经将我的项目接近完成。
我已经阅读了类似于我要求的多个线程,但方法完全不同。到目前为止,没有任何代码可以使用。
基本上(我之所以说这是因为我的代码涉及一个可爱的蛇式下降到一个复杂的混乱,但适用的片段将根据要求提出),我的问题是我正在呼叫
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
它将我的viewcontroller推送到模拟器和NSLogs我需要改变的字符串,但它推动了一个空白视图!该运行的代码使视图控制器变量保持不变:
UIViewController *viewController = [[xSheetMusicViewController alloc]initWithNibName:nil bundle:nil];
所以我心想,我在做什么!?所以我回到了旧方法,其中涉及使UIViewcontroller成为if-then,if-else-then语句,根据是否选择了某些行(标准内容)来推送不同的视图。这推动了我的字符串加载完美的新视图,但它只是一遍又一遍NSLog的一个字符串!最糟糕的是当我尝试返回rootviewcontroller时,我的应用程序会调用SIGABRT或EXC_BAD_ACCESS。 (这是适用的代码):
UIViewController *viewController = [[[UIViewController alloc]init]autorelease];
if (indexPath.row == 0 && indexPath.section == 0) {
appDelegate.baseURL = @"mussette.pdf";
viewcontroller = [[xSheetmusicViewController alloc]initwithnibname:nil bundle:nil];
}
else if (...)
//pushview, changestring, blah blah//
现在,我希望我的视图按照它应该推送PDF,并且具有正确的字符串值(并且不给我SIGABRT或EXC_BAD_ACESS,但这些是赠品),但似乎妥协只是出于我的达到。我知道我可能会做一些愚蠢的事情,可以通过一行代码来解决,但就目前而言,它似乎毫无希望。
提前致谢。
编辑:要回答你的所有问题,是的,没有xib,而是一个 (ID)的init 方法在下一个视图中。
编辑2:回答lostInTransit的请求并添加一些其他细节:
<else if (indexPath.row == 1 && indexPath.section == 0) {
appDelegate.baseURL = @"Importing PDF's.pdf";
此外,如果有帮助,输出会保持记录: 应用程序试图在目标上推送一个nil视图控制器。
当我尝试从tableviewcell推送视图时,它在加载PDF之前就这样做了,所以我忽略了它。
答案 0 :(得分:2)
问题:为什么首先将viewController初始化为UIViewController,然后再将其初始化为xSheetmusicViewController?我认为问题在于正确发布价值。在一个init中,您进行自动释放,而在另一个初始化中,您不进行自动释放。所以你很有可能两次发布变量导致BAD ACCESS。
你介意在最后一段代码中发布“blah blah”:)吗?
答案 1 :(得分:0)
您的应用程序中是否有名为xSheetmusicViewController.xib
的文件?在您调用[[xSheetmusicViewController alloc] initNithNibName:nil bundle:nil];
之后,它将以您的视图控制器作为其所有者加载(它将在首次访问视图属性时实际加载)。如果该文件不存在,则将调用视图控制器的-loadView:
方法来加载其视图。
如果你有一个空白视图,你有一个空白或错误命名的笔尖(也许你重命名了这个类而不是笔尖?)或者你没有在-loadView:
创建正确的视图。