//實例化一個新的控制器ViewControllerB
ViewControllerB *ctl = [ViewControllerB new];
//正向傳值,經過成員變量
ctl.receiveStr = sender.titleLabel.text;
//切換
/*
參數1:切換的控制器對象
參數2:是否須要動畫
參數3:回調block,暫時不使用
*/
[self presentViewController:ctl animated:YES completion:nil];dom
一般用於正向傳值,適用於A和B相互具備必定關聯性。不能用於隔頁面傳值。並且,須要傳值的屬性不能是私有屬性,也就是說在.h中聲明出來的屬性才能夠傳值。動畫
使用場景:
經常使用於回調,簡單的說就是B有一個按鈕,當按鈕被點擊時把點擊事件傳傳給A,並傳一個字符串"B被點了"。ui
//首先在B控制器中聲明一個block,參數是一個字符串 @property (nonatomic,copy) void(^block)(NSString *title);
//一樣在B控制器,在按鈕點擊觸發的方法裏執行block - (void)buttonClick:(UIButton *)sender { //改變ViewControllerA上UILabel顯示的內容
_block(sender.titleLabel.text);
//關閉
[self dismissViewControllerAnimated:YES completion:nil]; }
ViewControllerB *ctl = [ViewControllerB new];
//給ctl中的成員block賦值實體
ctl.block = ^(NSString *deliverStr){
//給UILabel上的text賦值
label.text = deliverStr;
};
//切換到ViewControllerB
[self presentViewController:ctl animated:YES completion:nil];
一樣的Block在這裏做爲屬性存在,同屬性傳值同樣,須要兩個控制器間具備必定關聯性。不能跨頁面傳值。
若是必定要跨,就要像接力賽同樣,A傳給B,B傳給C這樣