如何通过presentModalViewController向按下按钮的UIViewContoller(登录)发送消息?

时间:2011-08-13 21:21:05

标签: iphone objective-c uiview uiviewcontroller

所以这是我的问题:

我有一个带导航控制器的AppDelegate:

[self.window addSubview:navigationController.view];

在那里我放了一个presendModalViewController:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
 [[self navigationController] presentModalViewController:passwordViewController animated:YES];

}

我想要一个PasswordView,它接受密码并告诉NavigationController中的UIView他可以从互联网上捕获信息开始他的工作,使用一个不错的MBProgressHUD加载视图。

我试图建立一个委托,但它不起作用,因为我的UIView的实例是在导航控制器中建立的。

我有办法告诉我的UIView哪个在我的NavigationController中给出了密码,然后回复说密码是正确的,并说回来:

[self.parentViewController dismissModalViewControllerAnimated:YES];

删除此视图?

有一个名为iOutbank的应用程序,它有我想要的......

2 个答案:

答案 0 :(得分:0)

将一个委托添加到您输入有效密码时调用的视图控制器类。登录视图控制器中的这样的东西可以工作:

@protocol LoginDelegate
    - (void)loginSucceeded;
@end


@interface LoginViewController : UIViewController 
{
    id<LoginDelegate> delegate;
}

}

接下来,将密码视图控制器的委托设置为应用程序视图控制器类。为此,您的app delegate类需要实现您为登录委托定义的协议,因此在app delegate标头和实现文件中:

@interface MyAppDelegate : NSObject <LoginDelegate>
{
    // App delegate interface stuff
}

@implementation MyAppDelegate
{
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // Create myLoginViewController          

       [myLoginViewController setDelegate:self];

       // Display login view controller           
    }

    - (void)loginSucceeded
    {
        // Dismiss login view controller
        // Do other stuff
    }

}

当您的app委托类收到通知已输入密码的通知时,您可以关闭密码视图控制器并执行您想要执行的任何操作。

答案 1 :(得分:0)

@Tim Dean,非常感谢你帮我自己思考问题。 所以这就是我最终做到的方式:

我在My tableView中创建了一个PasswordView实例:

     - (void)viewDidLoad
{

self.passwordView = [[PasswordViewController alloc]init];
[passwordView setPasswordViewDelegate:self];

[self.navigationController presentModalViewController:self.passwordView animated:YES];
}

把我的代表放在那里:

@interface TableView : UITableViewController <PasswordViewDelegate>
{


PasswordViewController *passwordView;

}

从我的PasswordView获取我的Delegate方法:

-(void)loginPressed
{
NSLog(@"Login Pressed");
[self.parentViewController dismissModalViewControllerAnimated:YES];



 }

现在我可以使用我的TableViewClass的逻辑。

我喜欢堆栈溢出!

问候,我希望有人能解决我解决的问题,我现在要睡觉了......