UITableViewCell 中的 UIButton 使用 Storyboard 执行对另一个 UIViewController 的 Segue
Posted
技术标签:
【中文标题】UITableViewCell 中的 UIButton 使用 Storyboard 执行对另一个 UIViewController 的 Segue【英文标题】:UIButton within a UITableViewCell to Perform a Segue to Another UIViewController Using Storyboard 【发布时间】:2012-06-18 10:04:37 【问题描述】:在我的应用程序中,我有一个 ParentViewController,其中包含多个元素。其中一个元素是 UITableView。
我使用我在情节提要中设计的动态原型单元格设计了表格的单元格。
意思是,我在 Storyboard 中有一个 UIViewController;在里面我有一个 UITableView;在 UITableView 里面我有一个原型单元。
现在,我在 Prototype Cell 中添加了一个 UIButton,创建了另一个 UIViewController(我们称之为 ChildViewController),并通过 Segue 将 Storyboard 中的 UIButton 和 ChildViewController 连接起来。
我应该如何编写当用户点击 UIButton 时激活 Segue 的代码?
我设法自己创建了表格并在动态单元格中保存了数据(除了 UIButton 之外还有一些 UILabel),但我无法弄清楚如何将 UIButton 正确连接到代码。
我不想使用 UITableView 默认的“选择”功能,因为我希望在动态单元格中有几个按钮 - 每个按钮都会为不同的 ChildViewController 派生不同的 segue。
【问题讨论】:
【参考方案1】:这就是我解决相同问题的方法。希望它会有所帮助。
为此,您可以将指向 UITableViewController 的指针传递给自定义单元格的初始化方法,并将其存储在那里:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
// ...
CDTrackCell *cell = [tableView dequeueReusableCellWithIdentifier:strCellTableIdentifier];
CDTrack *currTrack = [self.fetchedResultsController objectAtIndexPath:indexPath];
[cell configureView:currTrack inTableViewController:self];
return cell;
将指针保存在自定义 UITableViewCell 类中:
- (void) configureView:(CDTrack*)track
inTableViewController:(CDTracksViewController*)_tvc
self.tvc = _tvc;
// ...
然后,您可以在点击按钮时执行转场:
- (IBAction)buttonAddToTracklistTapped:(UIButton *)sender
[self.tvc performSegueWithIdentifier:@"showAddToTracklist" sender:self];
有更好的想法吗?
【讨论】:
另一个很好的方法是利用“委托”模式,我现在就去尝试:)以上是关于UITableViewCell 中的 UIButton 使用 Storyboard 执行对另一个 UIViewController 的 Segue的主要内容,如果未能解决你的问题,请参考以下文章
更改 UITableViewCell 中的对象也更改了重用 UITableViewCell 的对象
确定 UITableViewCell 中的 UIButton
UITableViewCell 事件中的 UIButton 不起作用