IOS_簡單地頁面跳轉以及NSNotificationCenter(通知中
阿新 • • 發佈:2019-01-08
實現頁面1跳轉到頁面2,頁面2填寫資料後返回到頁面1,頁面1的label會顯示資料.
首先畫介面,上面是Navigation Bar
給頁面2設定storyboard id :
針對頁面2建立一個類.並設定自定義類.
給按鈕GO新增一個Action:
此時已經可以從頁面1跳轉到頁面2.,接下來就是讓他回來!- (IBAction)goBtn{ // 獲取 storyboard UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" //storyboard名稱 bundle:nil]; // 例項化ViewController nextViewController *nextVC = [storyboard instantiateViewControllerWithIdentifier:@"nextViewController" // 在第二個頁面剛剛定義的Storyboard ID ]; // 展示ViewController [self presentViewController:nextVC //要展示的 ViewController animated:YES // 是否 有動畫 completion:nil // 額外操作 ]; }
新增`完成`和`返回`的Action,實現:
- (IBAction)backBtn:(UIBarButtonItem *)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)doneBtn:(UIBarButtonItem *)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
這樣就實現了返回.
最後實現通知中心的實現,讓頁面1顯示來自頁面2的資訊
- 新增textfiled的引用
- 修改doneBtn:
- (IBAction)doneBtn:(UIBarButtonItem *)sender { [self dismissViewControllerAnimated:YES completion:nil]; // 把text裝在字典裡 NSDictionary * dic = [NSDictionary dictionaryWithObject:self.textfiled.text forKey:@"text_of_page_2"]; // 傳送一個通知 [[NSNotificationCenter defaultCenter] postNotificationName:@"call_page_1" // 通知的名字 object:nil userInfo:dic // 傳送的資料 ]; }
返回頁面1接收通知:
新增對label的引用
@property (weak, nonatomic) IBOutlet UILabel *textlabel;
在viewDidLoad中新增觀察者
// 新增一個觀察者
[[NSNotificationCenter defaultCenter] addObserver:self // 觀察者
selector:@selector(nextViewControllerCallBack:) // 觀察到後執行的訊息
name:@"call_page_1" // 觀察的標識
object:nil];
// 執行的訊息
- (void) nextViewControllerCallBack:(NSNotification *) notification{
// 獲取字典型別的資料
NSDictionary *dic = [notification userInfo];
// 消失
self.textlabel.text = [dic valueForKey:@"text_of_page_2"];
}
效果: