gpt4 book ai didi

IOS:向后移动两个 View

转载 作者:行者123 更新时间:2023-11-29 13:21:41 25 4
gpt4 key购买 nike

我已经被这个问题困了一段时间了,找不到任何关于如何做到这一点的有用信息..

我有一个基本 View ( View 1),我可以在其中选择 TableView 中的项目。在项目“页面”( View 2)上时,我可以选择编辑该项目,触发模态视图( View 3)。在此模态视图中,我可以选择删除此项。如果用户按下该按钮并确认他们想要删除该项目,我想将应用发送回 View 1..

我已经尝试了很多不同的东西(popToViewControllerpushViewControllerdismissViewController 等等)但是我什么也做不到工作。如果我关闭模式, View 2 不会关闭。有时甚至模态也不会消失。基本 View 是一个 UITableViewController,另外两个是 UIViewControllers,我正在使用 storyboard

最佳答案

您有多种选择,您可以使用 NSNotificationCenter 或使用 delegate图案。 NSNotificationCenter易于使用,但也很棘手。

要使用通知中心,您需要将观察者添加到您的 View Controller 类。当您关闭模态视图 Controller 时,您通知您的 View 2 现在 View 3 已关闭,view2 可以自行关闭......

所以基本上,当您通知中心时,无论通知的是什么,它都会运行一个方法等......

假设您在 View 3 中想要驳回您的 View 。

在 view3.m 中

-(IBAction)yourMethodHere
{
//dissmiss view
[self.navigationController dismissModalViewControllerAnimated:YES];
// or [self dismissModalViewControllerAnimated:YES]; whateever works for you

//send notification to parent controller and start chain reaction of poping views
[[NSNotificationCenter defaultCenter] postNotificationName:@"goToView2" object:nil];
}

在 View 2 中。

// For name of notification
extern NSString * const NOTIF_LoggingOut_Settings;

在 View 2.m 之前 @implementation 之后 #imports

NSString * const NOTIF_LoggingOut_Settings = @"goToView2";

@implementation
-(void)viewDidAppear:(BOOL)animated{

// Register observer to be called when logging out
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loggingOutSettings:)
name:NOTIF_LoggingOut_Settings object:nil];
}
/*---------------------------------------------------------------------------
* Notifications of 2 view
*--------------------------------------------------------------------------*/
- (void)loggingOutSettings:(NSNotification *)notif
{
NSLog(@"Received Notification - Settings Pop Over popped");

[self.navigationController popViewControllerAnimated:NO];// change this if you do not have navigation controller

//call another notification to go to view 1
[[NSNotificationCenter defaultCenter] postNotificationName:@"goToFirstView" object:nil];
}

将另一个观察者添加到您的第一个 View 在你看来1.hextern NSString * const NOTIF_FirstView;

在 View 1.m 之前 @implementation 之后 #imports

NSString * const NOTIF_FirstView = @"goToFirstView";

@implementation
-(void)viewDidAppear:(BOOL)animated{

// Register observer to be called when logging out
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(doYourThing:)
name:NOTIF_FirstView object:nil];
}
/*---------------------------------------------------------------------------
* Notifications of 1 view
*--------------------------------------------------------------------------*/
- (void)ldoYourThing:(NSNotification *)notif
{


// do your thing
}

关于IOS:向后移动两个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14245603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com