使用 pushViewController 加载 TableViewController 后没有发生 Ios-Segue 到 UIViewController
Posted
技术标签:
【中文标题】使用 pushViewController 加载 TableViewController 后没有发生 Ios-Segue 到 UIViewController【英文标题】:Ios-Segue to a UIViewController not happening after using pushViewController to load TableViewController 【发布时间】:2014-05-12 06:10:06 【问题描述】:我目前正在开发一个ios
应用程序来浏览远程计算机上的文件夹并显示图片。现在为了浏览文件夹,我使用相同的table view
并更新它的cells
,每次用户按下磁贴时。现在,在到达最终的内容列表(图像)之后,我正在尝试使用 segue 导航到 UIViewController
以显示 Images
。但我收到一个错误:"segue not found".
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// Fetch device
self->browseObjID = [avObjArray objectAtIndex:indexPath.row];
if([self->browseObjID isFolder])//To load same table view for browsing the folders
ContentL1TableViewController *targetViewController = [[[ContentL1TableViewController alloc] initWithMediaDevice:_devSelected andObjectId:self->browseObjID ];
[[self navigationController] pushViewController:targetViewController animated:YES];
else
[self performSegueWithIdentifier:@"DisplayImage" sender:self];// display final image
【问题讨论】:
首先,不要使用->
语法。其次,在 Interface Builder 中检查 segue 的名称。
可能是您没有使用该名称的 segue(拼写?),或者您拥有此代码的控制器与您在情节提要中连接 segue 的实例不同。跨度>
第一个你的DisplayImage标识符不匹配,否则如果你使用storyboard需要识别storyboard
如果你使用故事板***.com/questions/23102978/…
请看我的回答。您的视图控制器不是从情节提要 (alloc] initWithMediaDevice...
) 创建的。因此,您不能调用 perform segue,因为没有 segue(因为没有故事板)。
【参考方案1】:
您只能从情节提要创建的视图控制器中进行分割。
我假设您最初在故事板中定义了这个 TVC,但这只是第一个。
当您要访问后续 TVC 时,您将使用 alloc init 创建这些 TVC,因此它们没有定义 segue 的情节提要。
您应该使用 xib 文件创建图像视图控制器并从 xib 加载它或在代码中创建它。两者都会更容易。
或者您可以定义一个从 TVC 回到自身的“循环”segue,并使用它而不是一直使用 alloc init 创建一个。
【讨论】:
以上是关于使用 pushViewController 加载 TableViewController 后没有发生 Ios-Segue 到 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
导航控制器到 Pushviewcontroller 到新的视图控制器,WebKit 延迟/首次加载时慢
当 presentviewcontroller 或 pushviewcontroller 时 UITableView 被重新加载
浅论ViewController的加载 -- 解决 viewDidLoad 被提前加载的问题(pushViewController 前执行)