将 indexpath 值传递给 FirstViewController

Posted

技术标签:

【中文标题】将 indexpath 值传递给 FirstViewController【英文标题】:Pass the indexpath value to FirstViewController 【发布时间】:2012-02-21 10:39:40 【问题描述】:

我在我的应用程序中使用了两个视图控制器。我的 FirstViewController 中有一个按钮。当我选择按钮时,它会推动 SecondViewController。我在 SecondViewController 中有一个 tableView。如何在不使用NSUserDefaults的情况下,将SecondViewController的tableView中选中索引的indexpath值传递给FirstViewController?提前致谢。

【问题讨论】:

【参考方案1】:

使用协议。您可以使用委托将值传递回父视图。

最好使用委托(@Protocol)来回调父视图控制器。

一个简单的教程可以找到here

【讨论】:

【参考方案2】:

您始终可以通过 -[UIViewController parentController] 从 SecondViewController 访问访问 FirstViewController,例如,如果 FirstViewController 具有名为 selectedRowInSecondController 的属性:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

 FirstViewController *firstViewController = [self parentController];
 firstViewController.selectedRowInSecondController = [indexPath row];

【讨论】:

【参考方案3】:

在第二个viewcontroller中创建变量的属性。

@property(nonatomic,readwrite)NSUInteger indexValue;

然后

@synthesize indexValue= _indexValue;

然后在firstviewcontroller中创建secondVctr的对象;

#import "secondViewcontroller.h"

    @interface firstviewcontroller : UIViewController

@property(nonatomic,strong)secondViewcontroller *objsecondViewcontroller;


@synthesize objsecondViewcontroller =_objsecondViewcontroller;

当用户点击该按钮时,将以下代码放入该事件中。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    

    CountDown *controller = [[secondvctr alloc] initWithNibName:@"secondvctr" bundle:nil];
    self.objsecondViewcontroller.indexValue=indexPath
    [self.navigationController pushViewController:controller animated:YES];


【讨论】:

【参考方案4】:

使用 NSNotifications 传递值。

【讨论】:

以上是关于将 indexpath 值传递给 FirstViewController的主要内容,如果未能解决你的问题,请参考以下文章

如何将 uitableview 选择与 indexpath 值居中

将indexpath标签传递给tableview原型单元格内的按钮

不能将值传递给另一个 viewController?

如何将 indexPath 从 segue 传递到目标视图?

IndexPath.row 多个部分的错误值

将 indexpath 行传回父视图