将数据从 DetailViewController 发送到 MasterViewController
Posted
技术标签:
【中文标题】将数据从 DetailViewController 发送到 MasterViewController【英文标题】:sending data from DetailViewController to MasterViewController 【发布时间】:2013-04-07 13:16:42 【问题描述】:这正是我想要做的。
wizardviewcontroller.m
- (IBAction)onCountryClick:(id)sender
MJDetailViewController *detailViewController = [[MJDetailViewController alloc] initWithNibName:@"MJDetailViewController" bundle:nil];
[self presentPopupViewController:detailViewController animationType:MJPopupViewAnimationSlideLeftRight];
用户点击国家按钮,弹出列表显示。
当用户选择一个行按钮标题应该改变。
这是我的详细视图,
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
WizardViewController *mj = [[WizardViewController alloc] initWithNibName:@"WizardViewController" bundle:nil];
mj.countryselected = [countryNames objectAtIndex:indexPath.row];
[mj.countryButton setTitle:mj.countryselected forState:UIControlStateNormal];
[self dismissPopupViewControllerWithanimationType:MJPopupViewAnimationFade];
DetailViewController
正在关闭,但 countryButtonTitle
没有更新。我知道这是因为向导视图不刷新。我想知道在这种情况下正确的解决方法。
希望这有助于获得更好的答案。
【问题讨论】:
您的代码会创建一个WizardViewController 的new 实例,并在该新实例上设置一个属性。您必须设置 现有 主视图控制器的属性。 我的主视图控制器是 WizardViewController 不完全是……它是一个 WizardViewController 的实例。当您创建一个新对象时,它是一个不同的对象。 您应该在详细视图中使用协议并将master设置为delegate。例如,请参阅实用程序应用程序。 What's the best way to communicate between view controllers? 的可能重复项 【参考方案1】:在MJDetailViewController
中制作协议
@protocol MJDetailViewControllerDelegate;
@interface MJDetailViewController : UIViewController
@property (nonatomic,assign) id< MJDetailViewControllerDelegate> delegate;
@end
@protocol MJDetailViewControllerDelegate <NSObject>
- (void)selectedContry:(NSString *)title;
@end
然后像这样调用
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
NSString *title = [countryNames objectAtIndex:indexPath.row];
if ([self.delegate respondsToSelector:@selector(selectedContry:)])
[self.delegate selectedContry:title];
[self dismissPopupViewControllerWithanimationType:MJPopupViewAnimationFade];
在WizardViewController.h
中添加MJDetailViewControllerDelegate
作为protocol
)
现在在WizardViewController.m
中实现selectedContry:
方法,例如:
- (void)selectedContry:(NSString *)title
[self.countryButton setTitle:title forState:UIControlStateNormal];
希望对你有帮助。
【讨论】:
+1 不错的答案,我做了一些编辑。我希望你不会介意。以上是关于将数据从 DetailViewController 发送到 MasterViewController的主要内容,如果未能解决你的问题,请参考以下文章
将核心数据对象从 DetailViewController 传递到另一个 View Controller
Obj-C:从导航控制器中的 detailViewController 传回参数
通过 Segue 将缓存图像传递给 DetailViewController
如何将整数从 MasterViewController 传递给 DetailViewController? [复制]