我参与了http://blog.webscale.co.in/?p=150
中提供的示例代码#import <UIKit/UIKit.h>
#import "MyTableView.h"
@interface MyTestProjectViewController : UIViewController{
UILabel *aLabel;
UIButton *aButton;
MyTableView *nextView;
}
@end
@implementation MyTestProjectViewController
- (void) loadView{
[super loadView];
[self.view setBackgroundColor:[UIColor whiteColor]];
aLabel = [[UILabel alloc] initWithFrame:CGRectMake(90, 100, 200, 40)];
aLabel.text = @"Hello World";
[aLabel setTextColor:[UIColor redColor]];
[aLabel setBackgroundColor:[UIColor whiteColor]];
[self.view addSubview:aLabel];
aButton = [UIButton buttonWithType:UIControlStateHighlighted];
aButton.frame = CGRectMake(125, 300, 70, 35);
[aButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
[aButton setTitle:@"Hit Me" forState:UIControlStateNormal];
[self.view addSubview:aButton];
}
- (void)buttonPressed{
NSLog(@"button was pressed");
if(nextView==nil)
nextView = [[MyTableView alloc] init];
[self.navigationController pushViewController:nextView animated:YES];
}
@end
在buttonPressed方法中我有一些问题
[self.navigationController pushViewController:nextView animated:YES];
此处MyTestProjectViewController
。h实施UIViewController
协议。
这意味着MyTestProjectViewController
继承了UIViewController
协议的所有方法。和行
[self.navigationController pushViewController:nextView animated:YES];
表明navigationController
是MyTestProjectViewController
的成员,而不是UINavigationController
。
但我认为navigationController
是UINavigationController
的成员函数。请帮我解决这个问题?
答案 0 :(得分:1)
[self.navigationController pushViewController:nextView animated:YES];
无效,因为您没有在MyTestProjectViewController.h类中创建UINavigationController对象
UINavigationController *nvc
;并创造财产
@property(非原子,保留)UINavigationController * nvc;
MyTestProjectViewController.m文件中的@synthesize
@synthesize nvc;
在你的
中分配nvc-(void)viewdidload{nvc = [[UINavigationcontroller alloc]init]}
than use it
[self.nvc pushViewController:nextView animated:YES];
它会在下一堂课的上面导航栏推送到下一堂课。
[self presentModalViewController:nextView animated:YES]; 它也会工作,但你不会 获取导航栏在上面。
答案 1 :(得分:0)
尝试使用:
nextView = [[MyTableView alloc] initWithNibName:@"MyTableView" bundle:nil];
而不是
nextView = [[MyTableView alloc] init];
希望有所帮助
编辑:
initWithNibName:@"MyTableView" bundle:nil
将强制代码使用MyTableView.xib
答案 2 :(得分:0)
[self。navigationController
pushViewController:nextView animated:YES];
由于您的应用程序是UIViewControllerApplication,它将无法工作。最重要的UINavigationController继承自UIViewController。
如果你想看到你的下一个视图替换你的那个
[self presentModalViewController:nextView animated:YES];