我做了一个基于标签的应用程序.没有什么需要在横向模式上,而是几个观点.它在iOS5上运行正常,我对结果非常满意.然而,对于iOS6而且没有任何混乱,它现在旋转所有视图,后果不太好.
因为它是一个基于选项卡的应用程序,我在横向上需要的几个视图是modalViews.这样我就没有搞乱tabbar,我只能在构建选项的"Supported Orientations"设置中选择portrait并设置:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
Run Code Online (Sandbox Code Playgroud)
关于我想要的景观.
现在使用iOS6,这个视图也是纵向模式,无论如何,即使我旋转设备它们也不显示横向模式.同样,如果我允许"支持的方向"上的所有方向,它们都会旋转,无论我在上面的方法中使用什么.
在所有视图中,我没有在故事板上选中"使用Autolayout"框.
这里有什么帮助?
*编辑** 现在,我看到它,我在设备上的应用程序工作正常.我安装了促销代码,而不是来自Xcode,只是为了看我的客户是否有问题.幸运的是,他们不是.问题仍然存在.
是否可以弹出导航控制器两次?我有这个导航结构:
查看一个---->查看二----->查看三个
我想要完成的是,通过View Three上的一行,直接返回View One.我通过protocol-delegate从三到二完成了它,但是在视图中设置委托一个不起作用并设置两个连续的委托协议都弹出导航控制器,给我错误:嵌套导航控制器活动(或类似的东西) ).
任何帮助,将不胜感激.提前致谢!
我有一个UITableView(在UIViewController上),我想在其上面添加一个iAd横幅,但是在我已经位于顶部的工具栏下面.我正在尝试移动tableView(参考视图),这样我就可以在空白处找到横幅.
为了检查它,我创建了一个动作,我在其中移动tableView框架:
-(IBAction)iAdAction:(id)sender{
self.tableViewConc.frame=CGRectMake(0, 94, 320, 367);}
Run Code Online (Sandbox Code Playgroud)
其中94是工具栏中的44和来自横幅的50的总和.
该动作正常但是,我无法滚动到tableView的底部,当我尝试它时,它会反弹回来.我试图在同一个动作中更改tableView的高度(例如430而不是367),但它不起作用.我也在IB上试过它,但它也不起作用.
我觉得我错过了什么,但我不记得是什么.
有帮助吗?
提前致谢!
我已成功将我的应用程序翻译成西班牙语和加泰罗尼亚语.两个版本(除了英文版)都工作得很好.我正在准备提交,当我要添加新的加泰罗尼亚版本时,令我惊讶的是我无法从向下滚动菜单中选择这种语言,尽管我在处理翻译时能够在Xcode上选择它.
那么,我该如何发布加泰罗尼亚语版本?我知道我可以选择西班牙语并用加泰罗尼亚语填充场地,但后来我无法填写西班牙语版本.
这里有经验的人吗?
提前致谢!
我想在从UISearchBar调用的键盘上添加一个accessoryView.由于UISearchBar没有实现这个属性,我刚刚创建了一个toolBar.根据Apple关于此事的文档,我决定使用通知中心,不仅要知道键盘何时被调用,还要知道键盘的大小,这取决于方向.
我按照文档中的示例进行了操作,在keyboardWasShown方法上,我调用了一个动画,它将在键盘顶部显示工具栏.像这样的东西:
-(void)keyboardWasShown:(NSNotification*)aNotification {
NSDictionary *info=[aNotification userInfo];
CGSize keyboardSize=[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
NSLog(@"width: %.1f; height: %.1f", keyboardSize.width, keyboardSize.height );
[self showAccessoryView:keyboardSize.height];
}
Run Code Online (Sandbox Code Playgroud)
并且,在动画上我设置了工具栏的框架,如下所示:
self.auxiliaryKeyboardBar.frame=CGRectMake(0, self.view.frame.size.height-(44+kbh), self.view.frame.size.width, 44);
Run Code Online (Sandbox Code Playgroud)
其中44是工具栏的静态高度,kbh是从上面的方法传递的keyboard.size.heigth.
我观察到的问题是,userInfo字典给出的键盘大小总是指纵向方向.因此,纵向方向的NSLog是:
width: 320.0; heigth: 216.0,没关系
但当我将方向更改为横向并且我调用键盘时,NSLog如下:
width: 162.0; heigth: 480.0,这使工具栏超出范围.
所以,我在调用动画之前最后添加了一个条件,例如:
if ([self deviceIsPortrait]==YES) {
[self showAccessoryView:keyboardSize.height];
}else if ([self deviceIsPortrait]==NO) {
[self showAccessoryView:keyboardSize.width];
}
Run Code Online (Sandbox Code Playgroud)
我现在想知道我是否做错了,因为我正在严格遵循Apple的例子以避免依赖键盘高度(作为一个浮点数)而且我最终还是必须添加一个方向条件.
关于这里发生了什么的任何想法?
到目前为止,我只需要实现具有预定义设计(正常,副标题等)的原型单元,这不是问题.
现在我需要实现原型单元,其中包含一些控件,如分段开关,开关或任何其他.问题是我无法找到触发的动作是如何实现的以及它们与控件的关系.此外,我还没有找到任何关于如何在单个UITableViewController中实现不同原型单元的示例.
我知道这是一个普遍的问题,但我会在这里感谢一些指点.也许有人知道一些文档,教程等等.好吧,任何帮助都可以,
事先提醒.
如果我没有弄错的话,模态视图必须从父视图中解除,而不是从模态视图本身中解除.
在我目前的项目中,我有两个模态视图.在第一个中,我将数据传递给父视图.将数据传递给父视图时,将执行解除.
现在,我有另一个模态视图,不会将数据传递给父视图,所以我不知道如何解除除了做一个自我dismissModalView
除此之外,还有其他关于这个主题的良好实践的建议吗?
提前致谢!
更新:
从我得到的答案,我看到我没有让自己非常清楚(并不罕见,BTW).
我知道如何自我解雇modalViewController.那没问题.我也知道如何使用protocol-delegate方法在传递一些数据时从父视图中解除modalViewController.
我的问题是:当没有数据传递时,如何从父视图中解除modalViewController.
再次感谢!
我有一个CoreDataTableViewController的子类(由斯坦福大学的人做的UITAbleViewController圆的子类,用于链接CoreData和TableViews).在这个类上,我想执行一个fecth,通过一个名为"definition"的属性进行排序,执行它的代码如下:
- (void)setupFetchedResultsController{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:self.entity];
request.propertiesToFetch=[NSArray arrayWithObject:@"definition"];
request.returnsDistinctResults=YES;
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"%K != nil", @"definition"];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"%K != ''", @"definition"];
NSPredicate *predicate3= [NSPredicate predicateWithFormat:@"%K contains[cd] %@", @"definition", self.seachBar.text];
NSArray *prepredicateArray;
if ([self.seachBar.text length]) {
prepredicateArray = [NSArray arrayWithObjects:predicate1, predicate2, predicate3,nil];
}else {
prepredicateArray = [NSArray arrayWithObjects:predicate1, predicate2,nil];
}
request.predicate=[NSCompoundPredicate andPredicateWithSubpredicates:prepredicateArray];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"definition" ascending:YES ]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
[self performFetch];
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,请设置request.returnsDistinctResults = YES; 应避免重复获取.但它不起作用,我看到这个属性值的重复.
那里有什么我想念的吗?我很欣赏那里的一些指点.先感谢您. …
我有一个UITableView.我从NSDictionary中获取它,其中包含表格中每组项目的数组:标签,页脚,标题,UIViews等.
在第0部分中,我希望在第1行中的开关切换为开启时出现第2行.
我所做的和它的工作原理是,在numberOfRowsInSection中我添加了这段代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (interruptor.isOn==NO && section==0) {
return [[[infoTableContentArray objectAtIndex: section] objectForKey:kLabelKey] count]-1;
}else{
return [[[infoTableContentArray objectAtIndex: section] objectForKey:kLabelKey] count];
}
Run Code Online (Sandbox Code Playgroud)
}
并且链接到开关(中断器)的动作是:
-(IBAction)accioInterruptor:(id)sender{
[infoAndSettingsTable reloadData];
Run Code Online (Sandbox Code Playgroud)
}
因此,当切换开关时,表重新加载并且单元格出现或消失.它确实有效,但没有动画,这就是它,嗯......嗯,你知道.
我试图实现reloadRowsAtIndexPaths:withRowAnimation,将其添加到交换机调用的代码中:
-(IBAction)accioInterruptor:(id)sender{
[infoAndSettingsTable beginUpdates];
[infoAndSettingsTable reloadRowsAtIndexPaths:[[infoTableContentArray objectAtIndex: 0] objectForKey:kLabelKey] withRowAnimation:UITableViewRowAnimationBottom];
[infoAndSettingsTable endUpdates];
Run Code Online (Sandbox Code Playgroud)
}
但是,它不起作用.它崩溃了[infoAndSettingsTable endsUpdates];
顺便说一句,在所有情况下如下:
[[infoTableContentArray objectAtIndex: 0]
Run Code Online (Sandbox Code Playgroud)
是包含该部分标签的数组.
我做得对吗还是我史诗般的失败?
提前致谢!
在讨论了这个主题之后,我正在努力在UItableView上的footerview上实现2个按钮.要创建按钮,我在声明.h文件中声明它们,在实现.m文件上合成然后,我通过代码创建它们,如下所示:
- (UIButton *)resetButton{
if (resetButton == nil)
{
resetButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
resetButton.frame = CGRectMake(20.0, 40 , 95.0, 37.0);
[resetButton setTitle:@"Reset" forState:UIControlStateNormal];
resetButton.backgroundColor = [UIColor clearColor];
[resetButton addTarget:self action:@selector(resetAction:) forControlEvents:UIControlEventTouchDown];
resetButton.tag = 1;
}
return resetButton;
}
Run Code Online (Sandbox Code Playgroud)
然后,我将此代码实现到UITableView委托方法中:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView* customView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 100.0)];
[customView addSubview:self.resetButton];
[customView addSubview:self.calculateButton];
return [customView autorelease];
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,按钮出现在屏幕上,但是当我点击它们时,没有任何反应(我在动作上实现了AlertView以检查它们是否有效.
这有什么帮助吗?
谢谢!
编辑:链接到按钮的操作:
-(IBAction)resetAction:(id)sender {
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Reset"
message:@"You just pressed the Reset button" …Run Code Online (Sandbox Code Playgroud) ios ×9
iphone ×4
uitableview ×4
xcode ×2
animation ×1
autolayout ×1
autorotate ×1
core-data ×1
dismiss ×1
itunes ×1
localization ×1
modal-view ×1
nspredicate ×1
prototype ×1
scroll ×1
uikeyboard ×1
uiscrollview ×1