我有一个新项目,我想在触摸按钮时显示人员选择器.
所以我有一个带有标识符UIButton的泛型.我将此ViewController的类设置为.UIViewControllershowContactsABPeoplePickerNavigationController
现在在我的根ViewController中我有这个代码来初始化我的选择器:
#pragma mark - Segues
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"showContacts"]){
ABPeoplePickerNavigationController *ppnc = segue.destinationViewController;
ppnc.peoplePickerDelegate = self;
ppnc.addressBook = ABAddressBookCreate();
ppnc.displayedProperties = [NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]];
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我已将测试联系人添加到我的模拟器地址簿中,但结果如下所示:
没有选择器http://i.minus.com/jbwUQyLr36ChH.png
使用以下代码,这与我在prepareForSegue:方法中的操作非常相似,我设法通过以下代码显示选择器IBAction:
- (IBAction)showPicker:(id)sender {
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
NSArray *displayedItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty],
[NSNumber numberWithInt:kABPersonEmailProperty],
[NSNumber numberWithInt:kABPersonBirthdayProperty], nil];
picker.displayedProperties = displayedItems;
// Show the picker
[self presentModalViewController:picker animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
结果:
选择器http://i.minus.com/jeEVeIBmfIYdR.png
我不清楚为什么人物选择器没有显示.
将条形按钮项拖放到Interface Builder中的故事板中的视图控制器导航栏上非常简单.通过这种方式,您可以设置视图控制器导航项的leftBarButtonItem和rightBarButtonItem出口.但也有一个backBarButtonItem出路,并没有明显如何设置它.如何使用Interface Builder设置自定义后退栏按钮项?
interface-builder uibarbuttonitem uinavigationitem uistoryboard
在使用segue的导航中,从根控制器我们可以推送控制器A或B.
从A我们可以推C,它可以推B,以后可以放松到A重启过程.
从B我们可以推A,它可以推C,后来可以放松到B重启过程.
在B中,我们有一个按钮,上面写着"转到A",它必须根据场景放松或推动控制器A.

如果我能在预先形成push segue之前放松,我怎么能轻易地知道?
现在我使用navigationController数组来检查前一个控制器是否为C来推或放.我想知道使用segues的这种循环的通用解决方案,例如:
如果B可以放松到A 然后放松其他推A
所以,问题是,如何检查B可以在不访问navigationController数组的情况下放松到A?
我在故事板的根视图中有一个菜单表,只要子视图更新数据,我就会重新加载它.如何获取对根视图的引用,以便我可以在其上调用reloaddata方法?
在我的简单应用程序中,我创建了一些控制器,它们之间有基本的段:
黄色控制器 - > BlueController - > GreenController - > OrangeController.他们每个人都有自己的自定义类.
从OrangeController我创建unwindSegue我YellowController.没关系.
在我提出的每个课程中:
override func unwindForSegue(unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) {
print(unwindSegue)
print(subsequentVC)
}
Run Code Online (Sandbox Code Playgroud)
但它根本没有被召唤.为什么?我应该准备什么演示来测试此功能?
同样的是:
func allowedChildViewControllersForUnwindingFromSource(source: UIStoryboardUnwindSegueSource) -> [UIViewController]
func childViewControllerContainingSegueSource(source: UIStoryboardUnwindSegueSource) -> UIViewController?
Run Code Online (Sandbox Code Playgroud) 使用故事板,您无法轻松访问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) 编辑: 接受/赏金给任何能告诉我如何制作项目的人:
上一个问题变得一团糟,我自己已经解决了这个问题.如果有人想要制作更好的项目版本,赏金仍然可以争夺.
这是一个工作,清洁,随时可用的模板供任何人使用,完整的ARC,COCOS2D 2.1,故事板和一切
仅在iPhone上测试Xcode 4,5,iOS 6,7,但也应该在iPad上运行.
当我努力做到这一点时,我努力寻找这个,所以我希望我能帮助别人.对于自定义文件,可以使用Tiny Tim Games和/sf/answers/826075981/.我稍微修改了这些文件.新手的使用说明在项目自述文件中!:)
我的项目需要在2个不同的全局色调值之间切换.我该如何以编程方式执行此操作?
我有UIView一个UIImageView在最顶部,UILabel下面吧,UIButton下面的是,和UISegmentedControl它决定了决定了嵌入UIview在底部(也可以选择不显示任何在所有)来显示.
我遇到了在界面构建器中设置了所有约束的问题,当我在故事板中切换屏幕尺寸时,一切似乎都很好.但是,当我实际在设备上运行项目或模拟时,UIimage顶部会在"捕捉"到适合约束的大小之前被短暂拉伸.此外,似乎标签在短时间内消失,并在图像捕捉到大小后重新出现.发生"快照"后,一切都已就绪,没有任何问题.
在4英寸和3.5英寸显示器上进行测试时都会发生这种卡扣.我发现这很奇怪,因为我已经为4英寸屏幕设计了完美的用户界面.
有谁知道为什么会这样?
编辑 这里是IB中约束的样子.

uistoryboard ×10
ios ×7
objective-c ×2
storyboard ×2
xcode ×2
autolayout ×1
cocoa ×1
core-data ×1
ios5 ×1
ios9 ×1
segue ×1
swift ×1
tint ×1
uisearchbar ×1
uitableview ×1