objective-c – 从TableViewController中的performSegueWithIdentifier到嵌入在NavController中的第二个TVC无法正常工作

objective-c – 从TableViewController中的performSegueWithIdentifier到嵌入在NavController中的第二个TVC无法正常工作,第1张

概述我有两个TableViewControllers,中间有一个segue.当用户点击第一个TVC中的小区时,他们将看到第二个TVC. segue是模态的,有一个名为“segueToLocationDetails”的标识符,并传递一个对象.您或多或少可以将第二个TVC视为“详细信息”页面. 我的代码在我上面描述的场景中完美运行.然而,只要我将第二个TVC嵌入导航控制器,它就会中断. 例.我有完美的工作 我有两个tableVIEwControllers,中间有一个segue.当用户点击第一个TVC中的小区时,他们将看到第二个TVC. segue是模态的,有一个名为“seguetoLocationDetails”的标识符,并传递一个对象.您或多或少可以将第二个TVC视为“详细信息”页面.

我的代码在我上面描述的场景中完美运行.然而,只要我将第二个TVC嵌入导航控制器,它就会中断.

例.我有完美的工作.然后我突出显示IB中的第二个TVC,将鼠标移到Product |嵌入|导航控制器.现在第二个TVC在导航控制器中.然而,segue仍然指向第二个TVC.我删除了segue并将其从第一个TVC的单元重新连接到导航控制器,并确保给segue一个标识符.再次跑,它打破了!错误低于……

2011-12-23 15:30:45.469 Project12[5219:11603] -[UINavigationController
setDetailsObject:]: unrecognized selector sent to instance 0x7b92ce0
2011-12-23 15:30:45.471 Project12[5219:11603] * Terminating app due
to uncaught exception ‘NSinvalidargumentexception’,reason:
‘-[UINavigationController setDetailsObject:]: unrecognized selector
sent to instance 0x7b92ce0’
* First throw call stack: (0x16ea052 0x150ad0a 0x16ebced 0x1650f00 0x1650ce2 0x3933 0x703e1e 0x36f6d9 0x36f952 0xbf786d 0x16be966
0x16be407 0x16217c0 0x1620db4 0x1620ccb 0x14ec879 0x14ec93e 0x2dfa9b
0x2a98 0x29f5 0x1) terminate called throwing an exceptionCurrent
language: auto; currently objective-c

下面的一些代码可以帮助解释:

AllLocations.h& AllLocations.m(这是主表)

AllLocations.h@interface AllLocations : UItableVIEwController{    sqliteDB *MysqLiteDB;}@property (nonatomic,strong) NSMutableArray *locationsArray;AllLocations.m- (voID)tableVIEw:(UItableVIEw *)tableVIEw dIDSelectRowAtIndexPath:(NSIndexPath *)indexPath{    [self performSegueWithIDentifIEr:@"seguetoLocationDetails" sender:self];}- (voID)prepareForSegue:(UIStoryboardSegue *)segue sender:(ID)sender{    if ([[segue IDentifIEr] isEqualToString:@"seguetoLocationDetails"])     {        NSIndexPath *selectedindexPath = [self.tableVIEw indexPathForSelectedRow];        NSInteger rowNumber = selectedindexPath.row;        MysqLiteDB = (sqliteDB *) [locationsArray objectAtIndex:rowNumber];        DetailsTVC *detailsTVC = [segue destinationVIEwController];        detailsTVC.detailsObject = MysqLiteDB;            }}

详情TVC.h& DetailsTVC.m(这是详细的表格视图)

DetailsTVC.h@interface DetailsTVC : UItableVIEwController@property (nonatomic,strong) sqliteDB *detailsObject;DetailsTVC.m@implementation SpotDetailsTVC@synthesize spotDetailsObject;

注意:我遗漏了与问题不重要或不相关的所有代码.

再次:如果segue从Originating TableveiwController转到另一个tableVIEwController,这将完美地工作.它只会在我将第二个TVC嵌入导航控制器时中断.我需要知道如何在图片中使用Nav Controller.提前致谢!

解决方法 DetailsTVC * detailsTVC = [segue destinationVIEwController];

那条线是不正确的.由于您的第二个TVC现在嵌入在导航控制器中,[segue destinationVIEwController]现在是一个UINavigationController.这应该工作:

DetailsTVC * detailsTVC = [[segue destinationVIEwController] visibleVIEwController];

总结

以上是内存溢出为你收集整理的objective-c – 从TableViewController中的performSegueWithIdentifier到嵌入在NavController中的第二个TVC无法正常工作全部内容,希望文章能够帮你解决objective-c – 从TableViewController中的performSegueWithIdentifier到嵌入在NavController中的第二个TVC无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1017386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存