将 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原型单元格内的按钮