- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我有一个 UITabBarController ,其 UINavigationControllers 像这样初始化
UINavigationController *newsNavigationController = [[UINavigationController alloc] initWithRootViewController: newsViewControler];
newsViewController 是一个 UIViewController。当我按下选项卡栏中的按钮以使用 newsViewController 显示导航项时,导航栏中的标题设置正常。在 newsViewController 中,我有一个在初始化后调用的方法设置。在设置方法中我这样设置标题[[self navigationItem] setTitle:[category_c title]];
现在问题来了,在我的 newsViewController 中,我有一个 tableView,当我触摸一个单元格时,我想推送一个包含所选新闻的 UIViewController 并在导航栏中显示标题。
在 UIViewController 中,我有相同的设置方法,其中我设置了如上所述的标题。问题是没有显示出来。导航项不为空,因为我可以调用 self.navigationItem.hidesBackButton = YES;
并且它每次都会隐藏后退按钮,但不显示标题。
当触摸单元格时,我像这样创建并推送新闻 UIViewController
if(newsViewController == nil){
newsViewController = [[NewsViewController alloc] init];
[newsViewController setup];
}
[self.navigationController pushViewController: newsViewController animated:YES];
newsViewController 中的设置方法如下所示:
- (void) setup {
self.navigationItem.hidesBackButton = YES;
[self.navigationItem setTitle:@"my view"];
}
在 newsViewController 中,我有 viewDidLoad 并尝试在那里设置标题,但没有成功。
如果在[self.navigationController PushViewController:newsViewController动画:YES]之后;
我写 [[self.navigationController.viewControllers objectAtIndex:0] setTitle:@"myTitle"];
包含 UITableView 的 UIViewController 获取标题 myTitle 而不是我触摸单元格时推送的 newsViewController .
有什么指示吗?我不明白为什么标题设置不正确。
EDIT2:在阅读了更多内容并使用调试器逐步浏览我的代码并将 rootviewcontrollers 与 childViewControllers 进行比较后,我在设置 self.title = @ 后在 childViewController 的 viewDidLoad 方法中观察到了这一点“title”导航项被创建,所以它不是零的情况。在调试器中,当我展开 _navigationItem 变量时,离开 viewDidLoad 后字段 _navigationBar 为 nil,在 rootViewControllers 中,navigationBar 不为 NULL,标题也在那里。我读到,如果导航栏为空,标题将不会显示。图中是我在调试器中看到的。 alt text http://img138.imageshack.us/img138/1513/picture2bq.png现在我正在朝这个方向寻找。
编辑1:下面是parentViewController、firstChildViewController 和第二ChildViewController 的代码。查看parentViewController(标题可以)。我按下导航栏上的一个按钮,调用 bearbeitenAction -> 第一个子项被推送(标题未显示)。在第一个ChildViewController的导航栏上,我有一个按钮,按下该按钮时会将新的ViewController推送到堆栈上(第二个ChildViewController)。第二个ChildViewController的标题不行。当我按“返回”时,第一个ChildViewController 的标题将显示“确定”。
父 View Controller :
//MARK: -
//MARK: Initialization methods
- (void) setup {
dataManipulator = [[DataManipulation alloc] init];
dataManipulator.delegate = self;
[self.tabBarItem initWithTitle:[NSString stringWithFormat:@"%@",[category_c title]] image:[UIImage newImageFromResource:[category_c icon]] tag:0];
searchResults = nil;
companyDetailsPushed = NO;
}
//MARK: -
//MARK: ViewControllerMethods
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void) loadView {
NSLog(@"WatchlistViewController: loadView");
UIView *mainView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] applicationFrame].size.width, [[UIScreen mainScreen] applicationFrame].size.height)] autorelease];
[mainView setBackgroundColor:[UIColor whiteColor]];
mainView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
mainView.contentMode = UIViewContentModeScaleToFill;
[mainView setAutoresizesSubviews:YES];
companiesTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 44, [[UIScreen mainScreen] applicationFrame].size.width, 322)];
companiesTable.delegate = self;
companiesTable.dataSource = self;
[mainView addSubview:companiesTable];
[companiesTable release];
self.view = mainView;
}
- (void)viewDidLoad {
[super viewDidLoad];
if(![[category_c subtitle] isEqualToString:@""]) {
self.title = [category_c subtitle];
}
else {
self.title = [category_c title];
}
}
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(companyDetailsViewController == nil) {
companyDetailsViewController = [[CompanyDetailsScrollViewController alloc] init];
[companyDetailsViewController setup];
}
[watchlistDoneBtn setHidden:TRUE];
companyDetailsPushed = YES;
if(viewMode == SearchViewMode)
[companyDetailsViewController setCompany:[searchResults objectAtIndex:indexPath.row]];
else if(viewMode == WatchlistViewMode)
[companyDetailsViewController setCompany:[[[Financial_deAppDelegate sharedAppDelegate] watchlistCompanies] objectAtIndex:indexPath.row]];
[[self navigationController] pushViewController:companyDetailsViewController animated:YES];
}
- (void) bearbeitenAction:(UIButton *) sender {
NSLog(@"Berbeiten btn was pressed");
if(berbeitenViewController == nil){
berbeitenViewController = [[BerbeitenViewController alloc] init];
[berbeitenViewController setup];
}
[self.navigationController pushViewController:berbeitenViewController animated:YES];
}
代码中的firstChildViewController = berbeitenViewController:
- (void) setup {
self.navigationItem.hidesBackButton = YES;
}
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
NSLog(@"BerbeitenViewController: loadView");
UIView *mainView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] applicationFrame].size.width, [[UIScreen mainScreen] applicationFrame].size.height)] autorelease];
[mainView setBackgroundColor:[UIColor darkGrayColor]];
mainView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
mainView.contentMode = UIViewContentModeScaleToFill;
[mainView setAutoresizesSubviews:YES];
berbeitenBackBtn = [[UIButton alloc] initWithFrame:CGRectMake(5, 23, 69, 36)];
[berbeitenBackBtn setBackgroundImage:[UIImage newImageFromResource:@"back_btn.png"] forState:UIControlStateNormal];
[berbeitenBackBtn addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
[berbeitenBackBtn setEnabled:TRUE];
[self.navigationController.view addSubview:berbeitenBackBtn];
[berbeitenBackBtn release];
berbeitenAddBtn = [[UIButton alloc] initWithFrame:CGRectMake(260, 23, 55, 36)];
[berbeitenAddBtn setBackgroundImage:[UIImage newImageFromResource:@"bearbeiten_add_btn.png"] forState:UIControlStateNormal];
[berbeitenAddBtn addTarget:self action:@selector(addCompany:) forControlEvents:UIControlEventTouchUpInside];
[berbeitenAddBtn setEnabled:TRUE];
[self.navigationController.view addSubview:berbeitenAddBtn];
[berbeitenAddBtn release];
companiesTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] applicationFrame].size.width, 366)];
companiesTable.delegate = self;
companiesTable.dataSource = self;
[mainView addSubview:companiesTable];
[companiesTable release];
self.view = mainView;
}
- (void)viewDidLoad {
NSLog(@"BerbeitenViewController viewDidLoad");
[super viewDidLoad];
self.title = @"Edit watchlist";
}
//MARK: Buttons actions
- (void) popViewController:(UIButton *) sender {
NSLog(@"Pop BerbeitenViewController");
[self.navigationController popViewControllerAnimated:YES];
}
- (void) addCompany:(UIButton *) sender {
NSLog(@"Berbeiten addCompany btn pushed");
if(searchViewController == nil){
searchViewController = [[SearchViewController alloc] init];
[searchViewController setup];
}
[self.navigationController pushViewController:searchViewController animated:YES];
}
代码中的 secondaryChildViewController = searchViewController
- (void) setup {
self.navigationItem.hidesBackButton = YES;
}
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
NSLog(@"BerbeitenViewController: loadView");
UIView *mainView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] applicationFrame].size.width, [[UIScreen mainScreen] applicationFrame].size.height)] autorelease];
[mainView setBackgroundColor:[UIColor darkGrayColor]];
mainView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
mainView.contentMode = UIViewContentModeScaleToFill;
[mainView setAutoresizesSubviews:YES];
searchViewBackBtn = [[UIButton alloc] initWithFrame:CGRectMake(5, 23, 69, 36)];
[searchViewBackBtn setBackgroundImage:[UIImage newImageFromResource:@"back_btn.png"] forState:UIControlStateNormal];
[searchViewBackBtn addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
[searchViewBackBtn setEnabled:TRUE];
[self.navigationController.view addSubview:searchViewBackBtn];
[searchViewBackBtn release];
self.view = mainView;
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Edit Watchlist";
}
最佳答案
编辑 #2
我查看了你的代码,一切似乎都正常。对我来说唯一不合适的是您向导航 Controller 添加 subview 而不是使用子 Controller 的 navigationItem。我从来没有见过这样做的。每个ViewController都有一个UINavigationItem当 View Controller 被推到导航栏上时,它代 TableView Controller 的属性。只需阅读文档概述即可了解一些背景信息。
该 NavigationItem 有一个标题、左按钮和右按钮,您可以设置...我会尝试将按钮设置为这些属性,因为通过向导航 Controller 添加 subview ,它可能会对标题做一些奇怪的事情。 ..再说一次,我从来没有见过你这样做,所以我不确定它是对还是错。您需要进行的唯一更改是将按钮更改为 UIBarButtonItem 类。尝试一下。
原创
Root View Controller 位于数组中的索引 0...所以如果您这样做:
[[self.navigationController.viewControllers objectAtIndex:0] setTitle:@"myTitle"]
它将始终设置根的标题。尝试这样做:
objectAtIndex:([self.navigationController.viewControllers count] - 1)
在子 Controller 的 viewWillAppear 方法中进行这种设置甚至可能更容易......这样您就不必在导航 Controller 的子级中搜索正确的 View Controller 。
希望这有帮助
编辑您可以尝试仅在 init 方法中设置标题:
-(id)init {
if (self = [super init]) {
self.title = @"My Title";
}
return self;
}
这样,您就允许对象的 init 方法负责初始化对象的值(这是一件好事)。
关于iphone - NavigationItem setTitle 不适用于第二级 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2266300/
我在我的 Xcode 项目目录中输入了以下内容: keytool -genkey -v -keystore release.keystore -alias mykey -keyalg RSA \
假设我有一个像这样的 DataFrame(或 Series): Value 0 0.5 1 0.8 2 -0.2 3 None 4 None 5 None
我正在对一个 Pandas 系列进行相对繁重的应用。有什么方法可以返回一些打印反馈,说明每次调用函数时在函数内部进行打印还有多远? 最佳答案 您可以使用跟踪器包装您的函数。以下两个示例,一个基于完成的
我有一个 DataFrame,其中一列包含列表作为单元格内容,如下所示: import pandas as pd df = pd.DataFrame({ 'col_lists': [[1, 2
我想使用 Pandas df.apply 但仅限于某些行 作为一个例子,我想做这样的事情,但我的实际问题有点复杂: import pandas as pd import math z = pd.Dat
我有以下 Pandas 数据框 id dist ds 0 0 0 0 5 1 0 0 7 2 0 0
这发生在我尝试使用 Gradle 构建时。由于字符串是对象,因此似乎没有理由发生此错误: No signature of method: java.util.HashMap.getOrDefault(
您好,有人可以解释为什么在 remaining() 函数中的 Backbone 示例应用程序 ( http://backbonejs.org/examples/todos/index.html ) 中
我有两个域类:用户 class User { String username String password String email Date dateCreated
问题陈述: 一个 pandas dataframe 列系列,same_group 需要根据两个现有列 row 和 col 的值从 bool 值创建。如果两个值在字典 memberships 中具有相似
apporable 报告以下错误: error: unknown type name 'MKMapItem'; did you mean 'MKMapView'? MKMapItem* destina
我有一个带有地址列的大型 DataFrame: data addr 0 0.617964 IN,Krishnagiri,635115 1 0.635428 IN,Chennai
我有一个列表list,里面有这样的项目 ElementA: Number=1, Version=1 ElementB: Number=1, Version=2 ElementC: Number=1,
我正在编译我的源代码,它只是在没有运行应用程序的情况下终止。这是我得到的日志: Build/android-armeabi-debug/com.app4u.portaldorugby/PortalDo
我正在尝试根据另一个单元格的值更改单元格值(颜色“红色”或“绿色”)。我运行以下命令: df.loc[0, 'Colour'] = df.loc[0, 'Count'].apply(lambda x:
我想弄清楚如何使用 StateT结合两个 State基于对我的 Scalaz state monad examples 的评论的状态转换器回答。 看来我已经很接近了,但是在尝试申请 sequence
如果我已经为它绑定(bind)了集合,我该如何添加 RibbonLibrary 默认的快速访问项容器。当我从 UI 添加快速访问工具项时,它会抛出 Operation is not valid whi
在我学习期间Typoclassopedia我遇到了这个证明,但我不确定我的证明是否正确。问题是: One might imagine a variant of the interchange law
我是一名优秀的程序员,十分优秀!