使用 UIViewController 中的表将变量传递给详细视图控制器(不是 UITableViewController !!)
Posted
技术标签:
【中文标题】使用 UIViewController 中的表将变量传递给详细视图控制器(不是 UITableViewController !!)【英文标题】:Pass variable to a detail view controller using a table in UIViewController (not UITableViewController!!) 【发布时间】:2012-07-22 20:53:37 【问题描述】:我目前有 2 个视图控制器:ViewController
和 DetailViewController
。它们都不是表视图控制器,它们都只是视图控制器。但是,我在ViewController
上确实有一张桌子,否则效果很好。 I want to segue/pass a variable to DetailViewController
when a cell is selected.
使用情节提要,我设置了从单元格到DetailViewController
的模态segue,标识符为toDetailView
。
我尝试使用此方法将我的变量(在此示例中称为 play
)从 VC 传递到 DVC(通过 http://developer.apple.com/library/ios/#samplecode/SimpleDrillDown/Listings/Classes_RootViewController_m.html#//apple_ref/doc/uid/DTS40007416-Classes_RootViewController_m-DontLinkElementID_10):
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"toDetailView"])
NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
DetailViewController *detailViewController = [segue destinationViewController];
detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row];
但是我得到一个错误:Property 'tableView' not found on object type 'ViewController *'
。我认为这是因为它不是表视图控制器?我怎样才能解决这个问题?或者我可以使用另一种方法来使用(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
传递变量吗?
【问题讨论】:
【参考方案1】:在 ViewController 上,像这样创建一个新属性:
@property (nonatomic, assign) IBOutlet UITableView *tableView;
还有synthesize
。然后,在 Interface Builder 中,您应该能够将插座分配给您正在使用的 tableview。这应该可以解决问题
【讨论】:
我试过了,它使我的程序在构建时崩溃。输出中没有给出任何特殊错误来帮助我调试。我正在尝试不同的方法。 构建时崩溃? GCC 还是 LLVM?还有其他问题,因为这是规范的方法。请发布您的源代码 我再次尝试以确保我第一次没有做愚蠢的事情。现在我得到了我在最后一行代码中有Use of undeclared identifier 'dataController'
的错误。我可以使用更多源代码编辑我的原始帖子,但我不确定代码的哪些部分对您最有用。
dataController
是如何定义的? (如果是视图控制器的属性,可能就这么简单self.dataController
。)
我实际上得到了这个工作,我的代码有很多问题,在评论中发布会占用太多空间。但是感谢您的帮助,因为绝对需要插座!以上是关于使用 UIViewController 中的表将变量传递给详细视图控制器(不是 UITableViewController !!)的主要内容,如果未能解决你的问题,请参考以下文章