Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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
Iphone 如何在objective-c中使用DidSelectRowatineXpath_Iphone_Objective C_Xcode3.2_Didselectrowatindexpath - Fatal编程技术网

Iphone 如何在objective-c中使用DidSelectRowatineXpath

Iphone 如何在objective-c中使用DidSelectRowatineXpath,iphone,objective-c,xcode3.2,didselectrowatindexpath,Iphone,Objective C,Xcode3.2,Didselectrowatindexpath,我有一个带有导航表视图的选项卡栏。当我在表格视图中选择单元格时,我的应用程序崩溃。我希望在选定单元格时打开新的viewcontroller。我的猜测是,当调用didSelectRowatineXpath时,我没有正确地推送它。应用程序保持挂起状态几秒钟,然后关闭 这个代码有什么吸引你的眼球吗?或者您有任何示例代码吗?我正在使用带有模拟器4.3的Xcode 3 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(

我有一个带有导航表视图的选项卡栏。当我在表格视图中选择单元格时,我的应用程序崩溃。我希望在选定单元格时打开新的viewcontroller。我的猜测是,当调用didSelectRowatineXpath时,我没有正确地推送它。应用程序保持挂起状态几秒钟,然后关闭

这个代码有什么吸引你的眼球吗?或者您有任何示例代码吗?我正在使用带有模拟器4.3的Xcode 3

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        NSInteger row = [indexPath row];
        if (self.vailViewController == nil) {
            VailViewController *vailView = [[VailViewController alloc]  initWithNibName:@"View" bundle:nil];
            self.vailViewController = vailView;
            [vailView release];
        }

        vailViewController.title = [NSString stringWithFormat:@"%@", [resortsArray  objectAtIndex:row]];
        Ski_AdvisorAppDelegate *delegate = (Ski_AdvisorAppDelegate *)[[UIApplication  sharedApplication] delegate];
        [delegate.resortsNavController pushViewController:vailViewController animated:YES];
        [self.navigationController pushViewController:vailViewController animated:YES];
}

非常感谢

什么是细节?看起来您可能并没有像自己想象的那样将ViewController推到堆栈上。下面的代码可能更符合您的需要。此外,调试器是否提供有关崩溃的任何错误信息

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSInteger row = [indexPath row];
    if (self.vailViewController == nil) {
        VailViewController *vailView = [[VailViewController alloc]  initWithNibName:@"View" bundle:nil];
        self.vailViewController = vailView;
        [vailView release];
    }

    self.vailViewController.title = [NSString stringWithFormat:@"%@", [resortsArray  objectAtIndex:row]];
    Ski_AdvisorAppDelegate *delegate = (Ski_AdvisorAppDelegate *)[[UIApplication  sharedApplication] delegate];
    [delegate.resortsNavController pushViewController:self.vailViewController animated:YES];
}

确保保留了ViewController

@property (retain) VailViewController *vailViewController;
此外,是否保留Ski_AdvisorAppDelegate关闭的Resorts SnavController?该属性是如何定义的

此外,UITableViewController是UINavigationController的根控制器吗?如果是这样,您应该能够调用[self-navigationController]

[[self navigationController] pushViewController:detailedView animated:YES];
我通常在appDelegate中执行此操作:

_mainTableViewController = [[MainTableViewController alloc] init];
_navController = [[UINavigationController alloc] initWithRootViewController:_mainTableViewController];
在这段代码中,您的视图文件实际上名为“view.xib”,因为如果不是,这就是您的崩溃。显示此错误消息

*由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在名为“视图”的捆绑包中加载NIB:“NSBundle(loaded)”

因此,如果要使用initWithNibName加载此文件,并且文件的名称如下:

vILViewController.h availviewcontroller.m VILViewController.xib

你需要:

VailViewController *vailView = [[VailViewController alloc]  initWithNibName:@"VailViewController" bundle:nil];
但是,如果它是标准的UIViewController子类,则只需执行以下操作:

VailViewController *vailView = [[VailViewController alloc] init];
如果您只是在Xcode中创建了一个UIViewController子类,并且没有更改任何内容,则上述方法可以正常工作。视图控制器知道如何加载自己的视图。如果您让它为您创建了一个.xib文件,并且删除了其中的某些内容,或者只是不确定文件的所有者是否连接到interface bulder中.xib文件的根视图

我希望这有帮助

编辑:

您评论中的错误:

*由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:“不支持多次推送同一视图控制器实例。”

下面是代码中的两行:

[delegate.resortsNavController pushViewController:vailViewController animated:YES];
[self.navigationController pushViewController:vailViewController animated:YES];
我应该问一下这是不是两个不同的导航控制器?如果是这样的话,为什么他们需要将完全相同的视图控制器推送到他们身上


我会删除其中一个,然后它会毫无错误地推送视图控制器。

我会假设vailViewController是一个@property(retain)?还有,什么是aBookDetail?这应该是Valview吗?它会给出任何类型的错误吗?据我所知,这里的代码很好。我们需要了解self.vailViewController属性是如何定义的。此外,如果您还可以提供应用程序崩溃时出现的特定错误消息/堆栈跟踪,这将非常有帮助。当应用程序崩溃时,调试器会告诉我这一点。在抛出“NSException”程序实例后调用terminate,该程序收到信号:“SIGABRT”。我对aBookDetail的看法不好。。我忘了切换,当我复制它时,它应该是vailViewWell。我将VailView控制器保留在该代码所在的tableviewcontroller中。tableview是根。我已将SnavContorToller保留在我的代表中再次感谢您的帮助调试器提供了更多信息:**由于未捕获的异常“NSInternalInconsistencException”终止应用程序,原因:“无法在捆绑包中加载NIB:”NSBundle(已加载)“with name‘View’”看起来你在initWithNibName:@“View”中给了一个错误的名字,我在这里发布了一个更详细的答案。我没有给这个名字——这是John的问题。我想你是对的……是的,我想评论他的评论,而不是你的答案。很抱歉这只是对他发布的错误信息的回应。谢谢-我两次都试了,但都没用。我在调试器***终止应用程序时遇到此错误,原因是未捕获异常“NSInvalidArgumentException”,原因:“不支持多次推送同一视图控制器实例基于John添加到我答案中的调试器信息,我认为这可能是正确的答案。异常抱怨找不到“View”@John-那么不要保存控制器。每次尝试创建它。如果您以后担心性能问题,请查看UINibi更新的答案,问题似乎是将两个(或同一个)导航控制器推到块的底部两次。。如果你真的需要这样做,你需要两次都设置动画吗?你不知道加载viewcontroller时我有多高兴。谢谢各位。我很感激。当我拿出其中一个的时候,它起了作用。不管是哪一个。
[delegate.resortsNavController pushViewController:vailViewController animated:YES];
[self.navigationController pushViewController:vailViewController animated:YES];