在一个简单的测试应用程序,我试图通过名为“thisArray”从数组对象MasterViewController
到名为“passedData”中的一个字符串DetailViewController
。 我现在用故事板和UIViewController
嵌入导航控制器内。 使用prepareForSegue
方法,我顺利地通过了之间的数据UIViewController
:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"pushData"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
DetailViewController *destViewController = segue.destinationViewController;
destViewController.passedData = [thisArray objectAtIndex:indexPath.row];
}
}
现在,由于某些原因我想用didSelectRowsAtIndexPath
而不是prepareForSegue
。 我已经使用这个:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableString *object = thisArray[indexPath.row];
detailViewController.passedData = object;
}
但它没有工作。 我已经使用了以下情况:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
NSMutableString *object = thisArray[indexPath.row];
detailViewController.passedData = object;
[self.navigationController pushViewController:detailViewController animated:YES];
}
但它也没有工作。
问题 :
1)如何正确书写didSelectRowsAtIndexPath
更换prepareForSegue
?
2)如果我使用didSelectRowsAtIndexPath
,我是否需要删除之间的连接赛格瑞UIViewController
在故事板?
3)如果有什么是视图控制器之间真的没有SEGUE连接,我怎么能仍然使用通过它们之间的数据didSelectRowAtIndexPath
?
谢谢!
更新:根据答案,我收到的意见,我已经写了以下内容:
首先,我已经删除了控制器之间的连接赛格瑞,设置故事板ID DetailViewController
,类的名字也DetailViewController
。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"DetailViewController"
bundle:nil];
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"DetailViewController"];
NSMutableString *object = thisArray[indexPath.row];
detailViewController.passedData = object;
[self.navigationController pushViewController:detailViewController animated:YES];
}
但其得到开车撞以下错误:
***终止应用程序由于未捕获的异常
NSInvalidArgumentException
,原因是:“找不到一个名为情节串连图板DetailViewController
捆绑