小编rat*_*p99的帖子

iPhone上的UIPopoverPresentationController不会产生弹出窗口

我正在尝试UIPopoverPresentationController在我的iPhone应用程序中实现新功能(使用Objective C).我想要的是一个简单的popover,其中包含一个从启动按钮发出的tableview.

- 编辑 -

这是我的修订代码,改编自文档中的研究,SO,以及下面评论中的输入:

- (IBAction)selectCategoryBtn:(UIButton *)sender
{
    [self performSegueWithIdentifier:@"CatSelectSegue" sender:self.selCatButton];
}

-(void) prepareForSegue:(UIStoryboardSegue *) segue Sender:(id) sender
{
    if (sender == self.selCatButton)
    {
        if ([segue.identifier isEqualToString:@"CatSelectSegue"])
        {
            UIPopoverPresentationController *controller = segue.destinationViewController;
            controller.delegate = self;
            controller.sourceView = self.selCatButton;
            controller.sourceRect = self.selCatButton.frame;
        }
    }
}


-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
{
    return UIModalPresentationNone;
Run Code Online (Sandbox Code Playgroud)

这是我的故事板连接:

在此输入图像描述

然而,这只是以模态方式呈现一个桌面视图,从底部上升并消耗整个屏幕.

我用谷歌搜索了,看起来都是如此,但看起来我并不是唯一一个被我希望解决iPhone烦恼问题所迷惑的人.

任何人都可以看到我的代码中的故障或指导我一个明确的教程?我看过了,但也许API是如此新的没有人能够掌握它.

谢谢!

第二次编辑:

以下是上述代码的结果.我减少了视图控制器中的tableview的大小,我希望将其作为弹出窗口呈现.我把背景涂成灰色,只是为了澄清出现的是什么,而不是弹出窗口.

在此输入图像描述

iphone objective-c popover ios

30
推荐指数
3
解决办法
3万
查看次数

在核心数据中存储UIColor对象

我想将一个UIColor对象作为属性存储在Core Data实体上,然后检索它并以与我在该实体上执行其他属性相同的方式使用它.

在我的研究中,虽然文献看起来很稀疏,但我发现这篇文章说该属性应该被指定为"可转换",并且数据应该在使用NSKeyedArchiver和出现时手动转换NSKeyedUnarchiver.

但后来,我找到了一篇更新的帖子说,所有必要的是将UIColor保存为CD中的Transformable属性,生成一个Managed Object子类,并像其他属性一样使用.

苹果文档本身进入一些细节上的存储和检索NSColor上的对象,而不是(我能找到)UIColor.但是,它听起来像归档/取消归档在CD中自动处理.也许.我被这条线弄糊涂了:

如果您在Xcode中使用模型编辑器,请在属性的"类型"弹出窗口中选择"可变换",然后在"值变换器名称"文本字段中键入名称.

我假设他们正在谈论属性的名称,但我不确定,特别是因为它警告明确指定变换器可能引起的问题:

要点:虽然默认转换器是NSKeyedUnarchiveFromDataTransformerName指定的转换器,但实际上反向使用此转换器.如果明确指定默认转换器,Core Data将"以错误的方向"使用它.

我已经达到了这样的程度:我有一个名为"color"的新的可转换属性(没有命名变换器)并且生成了一个包含新"color"属性(类型id)的新子类文件.

我只是简单地困惑.有人可以给我一些关于如何从这里开始的明确指导吗?

如果重要的话,我正在使用MagicalRecord与Core Data进行交互.

非常感谢您的帮助!

core-data uicolor ios

14
推荐指数
2
解决办法
8303
查看次数

plists,数组和字典元素之间的关系是什么?

我有一个简单的程序,需要记录并持久存储每次用户在表视图中选择项目时产生的2个简单数据.这两个数据是1)tap()的时间NSDate和2)tapped项目的名称(NSString).此时,此信息采用以下形式:

TimerEvent *latestTappedEvent = [[TimerEvent alloc] init];
latestTappedEvent.timeTapped = NSDate.date;
latestTappedEvent.activityTapped = tappedItem.itemName;
Run Code Online (Sandbox Code Playgroud)

这两个数据必须保持相互关联.

我的问题是:

如何按时间顺序将这些数据输入和输出plist?

在我的研究中,我只是变得更加困惑.对我来说,如何使用plist并不明显.最初,我认为我可以使用NSMutableDictionarywith latestTappedEvent.timeTapped作为键,latestTappedEvent.activityTapped作为值.但是当我尝试手动构建plist时,似乎不可能,而是想要一个字符串作为键.

如果有人能帮助我理解这一点,最好通过给出这些不同元素之间关系的图形表示,我将永远感激不尽.

objective-c plist nsmutablearray nsmutabledictionary ios

5
推荐指数
1
解决办法
352
查看次数

iOS错误"初始化'NSTimeInterval*'(又名'double*')

我正试图获得两个NSDates之间的时间间隔,即previousActivity.stopTimepreviousActivity.startTime.我在这段代码中收到错误:

NSTimeInterval *previousActivityDuration = [previousActivity.stopTime timeIntervalSinceDate:previousActivity.startTime];
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

"Initializing 'NSTimeInterval *' (aka 'double *') with an expression of incompatible type 'NSTimeInterval' (aka 'double')"

我不明白; 如果NSTimeInterval又名'double',初始化表达式如何不兼容,我该如何解决?

非常感谢!

编辑:

根据@Rmaddy的评论,我删除了星号.然后我立即在以下行中收到此错误:

Assigning to 'NSNumber *' from incompatible type 'NSTimeInterval' (aka 'double')

这是违规行:

previousActivity.duration = previousActivityDuration;
Run Code Online (Sandbox Code Playgroud)

nstimeinterval ios

5
推荐指数
1
解决办法
4223
查看次数

iOS为什么我的UIPickerview方法循环?

我构建了我认为是一个简单的程序来探索CoreData关系的问题.

但是,这两种方法在segue之后意外循环(并成功到达目的地VC).涉及的方法是numberOfRowsInComponent(循环4次数)和titleForRow(循环5次数),NSLog在继续之前创建此输出:

2014-03-01 12:12:26.231 EntitiesAndRelationships[64785:a0b] Number of categories is 2
2014-03-01 12:12:26.233 EntitiesAndRelationships[64785:a0b] Number of categories is 2
2014-03-01 12:12:26.236 EntitiesAndRelationships[64785:a0b] Number of categories is 2
2014-03-01 12:12:26.237 EntitiesAndRelationships[64785:a0b] Number of categories is 2
2014-03-01 12:12:26.239 EntitiesAndRelationships[64785:a0b] Description of row is <WMDGCategory: 0x8a8a420> (entity: WMDGCategory; id: 0x8a8e2c0 <x-coredata://75EA0FB2-AB3F-480A-9EBE-CDA14EDEB902/WMDGCategory/p2> ; data: <fault>)
2014-03-01 12:12:26.242 EntitiesAndRelationships[64785:a0b] Description of row is <WMDGCategory: 0x8a8c110> (entity: WMDGCategory; id: 0x8a8e2d0 <x-coredata://75EA0FB2-AB3F-480A-9EBE-CDA14EDEB902/WMDGCategory/p1> ; data: <fault>) …
Run Code Online (Sandbox Code Playgroud)

loops core-data uipickerview ios

5
推荐指数
1
解决办法
772
查看次数

直接从NSTimeInterval转换为NSDateComponents到NSString?

NSTimeInterval从以前的各种计算中得到了几个NSDates.现在我想以days:hours:minutes:seconds格式向用户显示这些间隔.

在我的应用程序的早期,我使用此代码在稍微不同的上下文中显示信息:

-(void)updateDurationLabel
{
    //Which calendar
    NSCalendar *calendar = [NSCalendar currentCalendar];

    //Gets the componentized interval from the most recent time an activity was tapped until now

    NSDateComponents *components= [calendar components:NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit fromDate:self.startTime toDate:[NSDate date] options:0];
    NSInteger days = [components day];
    NSInteger hours = [components hour];
    NSInteger minutes = [components minute];
    NSInteger seconds =[components second];

    // Converts the components to a string and displays it in the duration label, updated via the timer

    cellLabelTempText = [NSString …
Run Code Online (Sandbox Code Playgroud)

nsstring nsdatecomponents nstimeinterval ios

2
推荐指数
1
解决办法
4191
查看次数

iOS在协议中使用未声明的标识符?

我有两个视图控制器HomeViewController(以下称HVC)和AddActivityViewController(以下称AAVC).在AAVC中,我宣布了一个委托协议:

@protocol AddActivityViewControllerDelegate;
Run Code Online (Sandbox Code Playgroud)

并由此定义:

@protocol AddActivityViewControllerDelegate


-(void) addActivityViewControllerDidSave;

-(void) addActivityViewControllerDidCancel:(ListActivity *) activityToDelete;

@end
Run Code Online (Sandbox Code Playgroud)

接下来,我在HVC(委托)中实现了这两个方法,如下所示:

-(void) addActivityViewControllerDidSave
    {
        [self.moc MR_saveToPersistentStoreAndWait];
        [self.navigationController dismissViewControllerAnimated:YES completion:nil];
    }

-(void) addActivityViewControllerDidCancel:(ListActivity *) activityToDelete
    {
        [activityToDelete MR_deleteEntity];
        [self.navigationController dismissViewControllerAnimated:YES completion:nil];        
    }
Run Code Online (Sandbox Code Playgroud)

我收到此错误"使用未声明的标识符'addActivityViewControllerDidSave',即使它已在协议中明确声明.

我应该提一下,在此之前,我正在处理显然是"导入循环",导致"未声明的协议"错误.这个错误似乎已得到修复.

以下是HomeViewController.h文件中的@import语句:

#import <UIKit/UIKit.h>
#import "ListActivity.h"
#import "AddActivityViewController.h"
#import "TimedActivity.h"

@interface HomeViewController : UIViewController <AddActivityViewControllerDelegate>

@property (strong, nonatomic) IBOutlet UITableView *myTableView;

@property NSManagedObjectContext * moc;

- (IBAction)dumpMemory:(UIButton *)sender;
@end
Run Code Online (Sandbox Code Playgroud)

并从AddActivityViewController.h文件:

#import <UIKit/UIKit.h>
#import "ListActivity.h"

@protocol AddActivityViewControllerDelegate;


@interface AddActivityViewController : UIViewController

@property …
Run Code Online (Sandbox Code Playgroud)

protocols delegation objective-c ios

0
推荐指数
1
解决办法
4643
查看次数

我在创建一个单身人士吗?

我需要一个标准列表,从中创建谓词以返回根据用户输入进行各种排序的数据.因此,创建一个名为"SearchSpecs"的实体及其相关的子类文件SearchSpecs.h和似乎是合理的SearchSpecs.m.通过这种方式,我的其他类可以使用此类中的方法和属性来创建一个"规范表",从中启动Core Data fetch.

但是,我注意到"单身人士"似乎存在很多争议.我很新,据我所知,从来没有创造过一个单身人士,想知道我现在是不是这样做了?

明白我不想重新开放或煽动单身辩论的火焰,因为我真的不知道它是什么.但我也不想在我的应用程序中创建一些怪物.

有人可以向我保证我的方法安全合理吗?

这是我SearchSpecs.hSearchSpecs.m文件中的相关代码:

//
//  SearchSpecs.h
//  WMDGx
//
//  Created by Tim Jones on 2/7/14.
//  Copyright (c) 2014 TDJ. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>


@interface SearchSpecs : NSManagedObject


// Properties

@property (nonatomic, retain) NSDate * fromDate;
@property (nonatomic, retain) NSDate * toDate;
@property (nonatomic, retain) NSString * categoryOfInterest;
@property (nonatomic, retain) NSString * activityOfInterest;
@property (nonatomic, retain) NSString * benchmarkCategory;
@property (nonatomic, retain) …
Run Code Online (Sandbox Code Playgroud)

singleton core-data objective-c ios

0
推荐指数
1
解决办法
715
查看次数

这个Objective-C语句是什么意思?

几分钟后我通常可以破译不熟悉的代码,但这是什么:

    NSNumber *one = [NSNumber numberWithInt:rand()%60+20];
Run Code Online (Sandbox Code Playgroud)

它来自XYPieChart.

谢谢!

objective-c ios

0
推荐指数
1
解决办法
125
查看次数

UIView animateWithDuration在iOS 8中的行为有所不同

我刚刚从iOS 7.1切换到iOS 8.1.我遇到了以下问题UIView animateWithDuration.图片胜过千言万语,我制作了每个iOS下的行为视频:

iOS 7.1:

https://vimeo.com/113887812

iOS 8.1:

https://vimeo.com/113887814

这是一款iPhone应用程序.

我应该注意到,在发布之前我已经搜索了SO和其他地方.这似乎是一个公认的问题,但我发现的是一些参考"使用基于约束的动画"(我不明白)并关闭自动布局,但没有真正的共识.

我已经尝试了几次刺伤,但没有任何进展.如果有人能指出(或指导我)一个明确的解决方案,我真的很感激.

我应该提一下,该应用程序只能在纵向位置工作,所以我没有考虑在开发过程中自动布局.

所有涉及的视图都是以编程方式创建的,除了滚动条本身.

这是代码.我包括整个方法,这很长,但我真的不明白新iOS中发生了什么变化,所以我是安全的.这个animateWithDuration电话非常深入到这个块中:


-(void) displayDayChart
{
    [self.scroller setBackgroundColor:[UIColor clearColor]];

    UIImage *image = [UIImage imageNamed:@"GrayPaper.png"];
    self.chartView.backgroundColor = [UIColor colorWithPatternImage:image];

    [self.view addSubview:self.scroller];
    [self.scroller setScrollEnabled:YES];

    [self.scroller setContentSize:CGSizeMake(320, 1800)];
    [self.scroller setContentOffset:CGPointMake(0.0, 0.0) animated:YES];

    dayBarArray = [[NSMutableArray alloc]init];
    infoLabelArray = [[NSMutableArray alloc]init];
    timeLabelArray = [[NSMutableArray alloc]init];

    timeFrameDC = - 86400; // 24 hours for this test, selectable in real life

    [self.scroller.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)];

    timeframeDCStart = [NSDate dateWithTimeIntervalSinceNow:timeFrameDC];
    timeframeDCEnd …
Run Code Online (Sandbox Code Playgroud)

iphone animation uiview ios ios8.1

0
推荐指数
1
解决办法
605
查看次数

切换到Xcode 8 beta?

我在OS X 10.11.3的MBP上运行Xcode 7.3.1.

我开始使用UIStackViews来帮助我布局我的UI.第一个实验很顺利 - 用它制作了一个很棒的自定义数字键盘.所以我转移到一个稍微复杂的场景,一旦我开始嵌套堆栈视图,Xcode就慢慢爬行了.每次命令,它等待5秒,然后在执行它之前使用10个沙滩球.真气.我多次重启Xcode,但没有任何改进.我看到有很多人向Apple报告了这个漏洞.

我看到Xcode 8的测试版是可用的,并且已经阅读了一些注释,但是没有找到与栈视图性能改进直接相关的任何内容.

根据他们在Xcode 8 beta中的堆栈视图性能经验,任何人都可以推荐测试版作为比我当前版本更好的选择吗?

xcode ios uistackview

0
推荐指数
1
解决办法
1778
查看次数