Iphone UIView父方法调用

时间:2011-04-14 17:05:48

标签: iphone uiview methods

我遇到了问题....请帮助!

我有一个导航控制器项目。从根控制器我将视图推到具有一些信息和2个按钮的堆栈上(是,否)。 (它不能是AlertView)。如果他们按下YES按钮,我在父视图上调用一个方法(使用委托方法)并从堆栈中弹出视图。父对象上的方法将新视图推送到堆栈。我假设在子视图的重新分配之后父方法将保留在内存中,因为该方法存在于父视图上,但是当子元素被释放时,它还释放在父元素上方法内创建的所有内容。有没有人有一个解决方案来响应父视图中子视图上发生的事件,这些事件将在子视图解除分配后保留?

谢谢!

标题文件中

#import <UIKit/UIKit.h> 

@protocol decrementDelegate; 
@interface decrement : UIViewController { 
    int currentCount; 
    IBOutlet UILabel *countLabel; 
    id <decrementDelegate> delegate; 
} 
@property (nonatomic, assign) id <decrementDelegate> delegate; 
@end 

@protocol decrementDelegate <NSObject> 
-(void)decrementControllerDidFinish:(decrement *)controller 
        withString:(NSString *)stringValue; 
@end 

在实施文件中:

[self.delegate decrementControllerDidFinish:self 
    withString:countLabel.text]; 
[self.navigationController popViewControllerAnimated:YES];

呼叫者:

-(void)decrementControllerDidFinish:(decrement *)controller 
    withString:(NSString *)stringValue { 

    // Show our details  
    myNewChildController *viewController = [[myNewChildController alloc] 
        initWithNibName:@"myNewChildController" bundle:nil]; 
    viewController.delegate = self; 
    [self.navigationController pushViewController:viewController animated:YES]; 
    [viewController release]; 
}

使用非委托,只需在父级上调用方法:

呼叫者:

mySummary *parent = [self.navigationController.viewControllers objectAtIndex:0];
[mySummary setMyAllowOnParent:@"Allowed"]; 
[self.navigationController popViewControllerAnimated:YES]; 

父:

-(void)setMyAllowOnParent:(NSString *)aAllow { 
newView *viewController = [[newView alloc] initWithNibName:@"newView" bundle:nil];  
[self.navigationController pushViewController:viewController animated:YES]; 
[viewController release]; 
}
当取消分配调用者视图时,

newView崩溃时发生了解除分配的错误。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你是如何创建代表的?您没有意外地使用保留而不是 assign (假设您使用属性来访问它)?因为如果你使用了retain,这可能会导致问题。

顺便提一下,你提到了一些无法使用的UIAlertView,这让我觉得你创建了一个与UIAlertView类似设计的视图。也许以下链接可能有用:

  

how can i make popup login window similar as on istore in objective-C/cocoa-touch