Gre*_*rne 1 xcode objective-c viewdidload ios segue
好的.如果你有两个viewControllers,你从第一个到第二个进行模态Segue,那么你用[self dismissModalViewControllerAnimated:YES]解雇它; 它似乎没有回忆起viewDidLoad.我有一个主页面(viewController),然后是各种选项页面,我希望在更改选项时更新主页面.当我刚刚做了两个模态分段(一个前进,一个后退)时,这很有用,但这似乎是非结构化的,并且可能导致大型项目中的代码混乱.
我听说过push segues.他们还好吗?
谢谢.我感谢任何帮助:).
Jos*_*osh 10
那是因为UIViewController已经加载到内存中了.但是你可以使用viewDidAppear : .
或者,您可以使推送视图控制器成为推送视图控制器的委托,并在推出的控制器退出屏幕时通知它更新.
后一种方法的好处是不需要重新运行整个机体viewDidAppear:.例如,如果您只更新表格行,为什么要重新渲染整个表格?
编辑:只为你,这是一个使用代表的快速示例:
#import <Foundation/Foundation.h>
// this would be in your ModalView Controller's .h
@class ModalView;
@protocol ModalViewDelegate
- (void)modalViewSaveButtonWasTapped:(ModalView *)modalView;
@end
@interface ModalView : NSObject
@property (nonatomic, retain) id delegate;
@end
// this is in your ModalView Controller's .m
@implementation ModalView
@synthesize delegate;
- (void)didTapSaveButton
{
NSLog(@"Saving data, alerting delegate, maybe");
if( self.delegate && [self.delegate respondsToSelector:@selector(modalViewSaveButtonWasTapped:)])
{
NSLog(@"Indeed alerting delegate");
[self.delegate modalViewSaveButtonWasTapped:self];
}
}
@end
// this would be your pushing View Controller's .h
@interface ViewController : NSObject <ModalViewDelegate>
- (void)prepareForSegue;
@end;
// this would be your pushing View Controller's .m
@implementation ViewController
- (void)prepareForSegue
{
ModalView *v = [[ModalView alloc] init];
// note we tell the pushed view that the pushing view is the delegate
v.delegate = self;
// push it
// this would be called by the UI
[v didTapSaveButton];
}
- (void)modalViewSaveButtonWasTapped:(ModalView *)modalView
{
NSLog(@"In the delegate method");
}
@end
int main(int argc, char *argv[]) {
@autoreleasepool {
ViewController *v = [[ViewController alloc] init];
[v prepareForSegue];
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
2012-08-30 10:55:42.061 Untitled[2239:707] Saving data, alerting delegate, maybe
2012-08-30 10:55:42.064 Untitled[2239:707] Indeed alerting delegate
2012-08-30 10:55:42.064 Untitled[2239:707] In the delegate method
Run Code Online (Sandbox Code Playgroud)
示例是在OSR的CodeRunner中运行的,我与之没有任何关联.
| 归档时间: |
|
| 查看次数: |
2921 次 |
| 最近记录: |