iphone - 重新加载查看 iPhone

标签 iphone objective-c ios cocoa-touch

所以我有两个 View A和B。A是个人资料 View ,B是登录 View 。 A 在 ViewDidLoad 方法中使用

LoginViewController *lvc = [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:[NSBundle mainBundle]]; //make new instance of LoginViewController
        [self presentModalViewController:lvc animated:NO]; //present the LoginViewController
        [lvc release];

在登录 View 中,如果登录成功,则移除该 View
[self dismissModalViewControllerAnimated:YES];

在登录 View 中,它会下载一些我想在配置文件 View 中显示的数据。我将如何将数据发送到配置文件 View 并将其显示在 xib 中。我相信配置文件 View 已经显示,但只是被隐藏了。

最佳答案

这是一个基本的“两个类(class)之间的交流”问题。有很多方法可以做到这一点,但这里有三种。我只为委托(delegate)编写了示例代码(因为我认为这可能是您情况下的最佳选择),但如果您需要通知或 KVO 的示例,请告诉我。

代表团 在 A 类中实现委托(delegate)或回调方法。委托(delegate)最适合小类层次结构。如果 A 类是唯一会加载 B 的类,而 A 是唯一关心 B 中发生的事情的类,那么委托(delegate)是移动数据的最简单方法。它易于实现,易于理解,并且类之间有明确的关系。

// Class A
- (void)displayLoginViewController {
    LoginViewController *lvc = [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:[NSBundle mainBundle]];
    lvc.delegate = self;
    [self presentModalViewController:lvc animated:NO]; //present the LoginViewController
    [lvc release];
}

- (void)loginViewControllerWasSuccessfull:(LoginViewController *)loginViewController {
    // Do whatever you need to do here
    [self dismissModalViewControllerAnimated:YES];

}

在登录 View Controller 中,在标题中执行以下操作:
@property (assign) NSObject delegate; // declared assign so you don't have circular references

......这在实现中:
- (void)didLogin {
    [self.delegate loginViewControllerWasSuccessfull:self];
}

通知 A 类将注册以监听登录通知。 B 类将发布登录通知。如果关心登录的类是分布式的,通知是最好的。也就是说,有许多类关心登录事件,它们可能不一定与执行登录的类有直接关系。

键值观察如果你不特别关心登录事件,KVO 是最好的,你关心数据的变化。您将拥有一些管理数据的类,可能是 NSManagedObject如果您使用的是核心数据。 A 类将观察其感兴趣的任何属性的变化。您的 LoginViewController完成下载数据后将更新该数据类。将通知 A 类数据已更改。

无论您决定使用哪种解决方案,最终的选择都归结为问“A 级关心什么?”。 A类需要知道B类成功登录吗?使用委托(delegate)。 A 类是否需要知道某个地方,某个类(class)已登录?使用通知。 A类不关心登录,它只需要知道数据是否发生了变化?使用 KVO。

关于iphone - 重新加载查看 iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7228681/

相关文章:

iphone - 如何将字符串值传递给以前的 viewController

iphone - 重新加载RowsAtIndexPaths :withRowAnimation: crashes my app

iphone - NSInternalInconsistencyException 为 'CGPDFDocumentRef == NULL'

iphone - 如何在 iPhone/Mac 上使用 CoreAudio 合成声音

ios - 在 UITableViewCell 中设置边框并在滚动时闪烁的问题

ios - 来自苹果网站的食物追踪应用程序

iphone - 这个if语句怎么触发呢?

ios - 通过-weak_library 弱链接静态库

objective-c - 无法创建唯一的 NSNumber 数组 - iOS

ios - UIViewControllerAnimatedTransitioning 黑屏