如何将对象从细节披露点击传递到详细视图控制器?对此有任何建议或快速解决方案吗?理想情况下,我想创建一个这样的方法:
[self performSegueWithIdentifier:@"showDetail" sender:self passObject:object];
原因是当我在详细披露指标之前按下单元格时,“准备segue”似乎只会被调用。我如何创建一个类似上面的方法来创建下面的准备效果?
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
id object = [_objects objectAtIndex:indexPath.row];
[[segue destinationViewController] setDetailItem:object];
}
我已经尝试过像这样创建UIStoryboardSegue的子类,但遇到了两个问题。
@implementation masterToDetail
-(void)performSegueWithIdentifier:(NSString*)identifier sender:(id)sender passObject:(id)object{
[self.destinationViewController setDetailItem:object];
[self performSegueWithIdentifier:identifier sender:sender];
}
-(void)performSegueWithIdentifier:(NSString*)identifier sender:(id)sender{
//What code should go here? Issue one
}
-(void)perform{
//Second issue, the compiler will crash and say I need to override perform.
}
答案 0 :(得分:4)
我通过彻底抛弃segue想法的子类来解决这个问题。我删除了自定义segue并将push segue( from tableviewcontrollre )发送到我的详细视图控制器。然后我创建了一个实例变量NSIndexPath* _ipath;
,我的代码如下:
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
_ipth = indexPath;
[self performSegueWithIdentifier:@"showDetail" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSLog(@"prepping");
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSLog(@"in if");
id object = [_objects objectAtIndex:_ipth.row];
[[segue destinationViewController] setDetailItem:object];
}
}
这样就可以为segue做好准备,为正确的细胞做好准备。
答案 1 :(得分:1)
打开故事板
选择主视图控制器 - 主
从UITableViewCell选择Segue到Detail View Controller - Detail
打开属性检查器
标识符 - > masterToDetail写
答案 2 :(得分:0)
您只需右键单击“表视图单元格”,然后从附件操作中按住Ctrl键拖动。