![](/img/trans.png)
[英]How to temporarily hide a presented View controller that is also presenting a view controller
[英]How to setup a relationship between the presenting View Controller and the presented View Controller?
我仍在學習Objective-C,並且很難從展示VC中解散展示的VC。
我讀到要實現此目的,您需要建立代表以將正確的消息從所呈現的VC發送回所呈現的VC。
我的情節提要看起來像這樣:
我遇到的問題是,如果單擊UIBUtton2,它不會返回到Main VC。 實際上,它什么也沒做。
但是,單擊從VC1到VC2的任何單元格,然后單擊UIButton3即可實現過渡到VC1的轉換。
MainVC.h:
#import "VC1.h"
@interface MainVC : UIViewController <VC1Delegate>
....
MainVC.m:
- (void)didGoBackToMainVC
{
[self dismissViewControllerAnimated:YES completion:nil];
}
....
VC1 .h:
#import "VC2.h"
@protocol VC1Delegate <NSObject>
@required
- (void)didGoBackToMainVC;
@end
@interface VC1 : UIViewController <UITableViewDataSource, UITableViewDelegate,
VC2Delegate>
@property (weak, nonatomic) id <VC1Delegate> delegate;
- (IBAction)UIButton2:(UIButton *)sender;
VC1.m:
- (void)didGoBackToVC1
{
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)UIButton2:(UIButton *)sender
{
[self.delegate didGoBackToMainVC];
}
VC2.h:
@protocol VC2Delegate <NSObject>
@required
- (void)didGoBackToVC1;
@end
@interface VC2 : UIViewController
@property (weak, nonatomic) id <VC2Delegate> delegate;
- (IBAction)UIButton3:(UIButton *)sender;
VC2.m:
- (IBAction)UIButton3:(UIButton *)sender
{
[self.delegate didGoBackToSponsors];
}
我確定我不太了解這種關系。 有人可以告訴我我在做什么錯嗎?
謝謝
從上面的評論中我了解到,我看到您的主VC正確顯示了VC1 Modally。 所以我想您的VC1.m中有此代碼
- (IBAction)goToMainVC:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
接下來,確保您的VC1中的單元格具有“觸發的序列”選擇類型為“顯示”。 而且您可能在VC1.m中有此代碼
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"pushVC2"]) {
VC2 *vc2 = (VC2 *)segue.destinationViewController;
}
}
接下來在VC2.m中,您也應該擁有這個
- (IBAction)dismissVC2:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
如果您擁有所有這些,它應該像魅力一樣工作。 在這種情況下,不需要代表。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.