代码之家  ›  专栏  ›  技术社区  ›  jack

将数据从DetailViewController发送到MasterViewController

  •  1
  • jack  · 技术社区  · 13 年前

    这正是我想要做的。

    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 未更新。我知道这是因为魔法视图并不令人耳目一新。我想知道在这种情况下正确的解决方法。

    希望这有助于得到更好的答案。

    1 回复  |  直到 13 年前
        1
  •  2
  •   viral    13 年前

    在中生成协议 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];
    }
    

    添加 MJDetailViewControllerDelegate 作为一个 protocol 在里面 WizardViewController.h )

    现在实施 selectedContry: 中的方法 WizardViewController.m 比如:

    - (void)selectedContry:(NSString *)title
    {
        [self.countryButton setTitle:title forState:UIControlStateNormal];
    }
    

    希望它能帮助你。