使用故事板,您无法轻松访问appDelegate中的第一个视图控制器(尽管您prepareForSegue可以轻松地将ManagedObjectContext传递到导航堆栈中.
我已经决定给每个视图控制器(或每个视图控制器的超类)要求Core Data访问一个moc成员:
@synthesize moc = _moc;
@property (nonatomic) __weak NSManagedObjectContext *moc;
Run Code Online (Sandbox Code Playgroud)
我对此感到不安,因为它似乎不是一种非常优雅的方式 - 代码太多了.但直接分配需要在viewControllers数组中指定绝对索引,并在每次ManagedObjectContexts的需求发生更改时更改appDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
// rootView gets a tab bar controller
for(UINavigationController *navController in tabBarController.viewControllers) {
for(UIViewController *viewController in navController.viewControllers) {
if([viewController respondsToSelector:@selector(setMoc:)]) {
[viewController performSelector:@selector(setMoc:) withObject:self.managedObjectContext];
NSLog(@"Passed moc to %@", [viewController description]);
}
}
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
这种方法有哪些缺陷,有更好的方法吗?尝试更通用是否更好:
- (void)assignManagedObjectContextIfResponds:(UIViewController *)viewController {
if([viewController respondsToSelector:@selector(setMoc:)]) {
[viewController performSelector:@selector(setMoc:) withObject:self.managedObjectContext];
NSLog(@"Passed moc to %@", [viewController description]); …Run Code Online (Sandbox Code Playgroud) core-data uitabbarcontroller uinavigationcontroller ios5 uistoryboard
我想在storyboard xcode中为我的表创建searchBar,Everythings适合我,我没有任何错误,只是搜索不起作用.
我看到了这两个教程,但仍然无效.我无法搜索.我的教程:
-http://stackoverflow.com/questions/9897171/uisearchbar-implemented-with-storyboards
-http://www.youtube.com/watch?v=IqDZHgI_s24
Run Code Online (Sandbox Code Playgroud)
你能帮帮我吗,先谢谢你!
这是我的代码
CreateViewController.h
#import <UIKit/UIKit.h>
@interface CreateViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate>
{
// @property (weak, nonatomic) IBOutlet UISearchBar *searchBar;
NSArray *datas;
NSMutableArray *displayItems;
IBOutlet UITableView * tableView;
IBOutlet UISearchBar * searchbar;
}
@end
Run Code Online (Sandbox Code Playgroud)
CreateViewController.m
#import "CreateViewController.h"
@interface CreateViewController ()
@end
@implementation CreateViewController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
datas = [NSMutableArray arrayWithObjects:@"Johan", @"Paul",@"George",@"Ringo", nil];
displayItems = [[NSMutableArray alloc] …Run Code Online (Sandbox Code Playgroud) 我正在使用Storyboard,我正面临着错误,如下所示,我的代码已成功执行,但它们没有页面显示或模拟器中的操作仅在启动图像后显示黑屏.
ClsMainPageAppDelegate.h
#import <UIKit/UIKit.h>
@interface ClsMainPageAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
Run Code Online (Sandbox Code Playgroud)
ClsMainPageAppDelegate.m
#import "ClsMainPageAppDelegate.h"
#import "ClsMainPageViewController.h"
#import "ClsTermsandConditionViewController.h"
@implementation ClsMainPageAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
NSUserDefaults *fetchDefaults = [NSUserDefaults standardUserDefaults];
int message = [fetchDefaults integerForKey:@"checkvalue"];
NSLog(@"Message Hello : %i",message);
if(message == 1)
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ClsMainPageViewController *mvc = [storyboard instantiateViewControllerWithIdentifier:@"BeIinformedPage"];
[(UINavigationController*)self.window.rootViewController pushViewController:mvc animated:NO];
NSLog(@"Launched Home Page");
}
else
{
UIStoryboard *storyboard = [UIStoryboard …Run Code Online (Sandbox Code Playgroud) 编辑: 接受/赏金给任何能告诉我如何制作项目的人:
上一个问题变得一团糟,我自己已经解决了这个问题.如果有人想要制作更好的项目版本,赏金仍然可以争夺.
这是一个工作,清洁,随时可用的模板供任何人使用,完整的ARC,COCOS2D 2.1,故事板和一切
仅在iPhone上测试Xcode 4,5,iOS 6,7,但也应该在iPad上运行.
当我努力做到这一点时,我努力寻找这个,所以我希望我能帮助别人.对于自定义文件,可以使用Tiny Tim Games和/sf/answers/826075981/.我稍微修改了这些文件.新手的使用说明在项目自述文件中!:)
我的项目需要在2个不同的全局色调值之间切换.我该如何以编程方式执行此操作?
我正在以push segue编程方式调用如下
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [mainStoryBoard instantiateViewControllerWithIdentifier:@"addToCartViewContollerForItem"];
[self.navigationController pushViewController: vc animated:YES];
Run Code Online (Sandbox Code Playgroud)
但我的问题是我想将这个segue的一些信息发送到目标viewcontroller.但这种方法- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender根本没有被解雇.
这就是准备方法的方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
NSLog(@"segue from deals screen");
//addToCartViewContollerForItem
if([[segue identifier] isEqualToString:@"addToCartSegue"]){
NSIndexPath *selectedRow = [[self tableView] indexPathForSelectedRow];
Item *currentItem = [[Item alloc]init];
currentItem = [itemList objectAtIndex:[selectedRow row]];
RESTAddToCartViewController *vc = [segue destinationViewController];
[vc …Run Code Online (Sandbox Code Playgroud) 在故事板上的UIViewController中,我有一个UITableView,其大小通常在一个部分中有两行,没有页眉或页脚,即高度为88.0f.在某些情况下,我想添加第三行.所以在viewWillAppear:animated:(和其他逻辑位置)我将帧设置为44.0f逻辑像素更高:
CGRect f = self.tableView.frame;
self.tableView.frame = CGRectMake(f.origin.x, f.origin.y, f.size.width, f.size.height + 44.0f);
NSLog(@"%@",NSStringFromCGRect(self.tableView.frame));
Run Code Online (Sandbox Code Playgroud)
没有争议; 相当标准的调整大小代码,然而......它不起作用!tableView高度不会在视觉上改变.NSLog语句报告我期望的高度(132.0f).这是因为我正在使用故事板吗?我不确定为什么这不起作用.
我正在维护一个有趣的应用程序(目标iOS6).在修复了静态代码分析器发现的所有现有编译器警告和许多其他内容后,我发现没有警告要修复.已添加-Wall和-Werror,还不太热衷于添加其他人.
然后我发现了一些有趣的东西,到目前为止谷歌或StackOverflow似乎完全不知道!
Xcode5项目"Build Settings"有一个名为"Interface Builder Storyboard Compiler - Options"的小节.四个案例是可以理解的:
问题:我可以在"其他故事板编译器标志"中添加什么内容?我在哪里可以找到更多信息?
我有UIView一个UIImageView在最顶部,UILabel下面吧,UIButton下面的是,和UISegmentedControl它决定了决定了嵌入UIview在底部(也可以选择不显示任何在所有)来显示.
我遇到了在界面构建器中设置了所有约束的问题,当我在故事板中切换屏幕尺寸时,一切似乎都很好.但是,当我实际在设备上运行项目或模拟时,UIimage顶部会在"捕捉"到适合约束的大小之前被短暂拉伸.此外,似乎标签在短时间内消失,并在图像捕捉到大小后重新出现.发生"快照"后,一切都已就绪,没有任何问题.
在4英寸和3.5英寸显示器上进行测试时都会发生这种卡扣.我发现这很奇怪,因为我已经为4英寸屏幕设计了完美的用户界面.
有谁知道为什么会这样?
编辑 这里是IB中约束的样子.

我有一个表视图控制器,并且单击一个单元格可以根据单元格中的数据类型触发许多不同类型的推送段之一.在tableView:didSelectRowAtIndexPath中确定正确segue的标识符,然后使用self.performSegueWithIdentifier触发segue:
对于其中一个segues,我想将同一个视图控制器的另一个实例推送到导航堆栈.这是否可以在不必将相同类型的新视图控制器对象拖到故事板上?到目前为止,如果我从表格单元格Ctrl + Drag到视图控制器,我只能将segue连接到同一个视图控制器.这不是我想要的.
uistoryboard ×10
ios ×8
xcode ×4
iphone ×3
objective-c ×3
uitableview ×2
autolayout ×1
core-data ×1
ibtool ×1
ios5 ×1
segue ×1
storyboard ×1
tint ×1
uisearchbar ×1
xcode6 ×1