小编shi*_*him的帖子

使用故事板 ID iOS 以编程方式调用视图控制器

我想要的是?

  • MainViewController我以编程方式从 xib 中打开一个视图。此 xib 视图包含一个UIButton. xib 成功打开。
  • 点击那个UIButton我想移动FeedBackViewController

我的代码

  • 这是我用来FeedBackViewController点击的代码UIButton

    FeedBackViewController *view=[self.storyboad instantiateViewControllerWithIdentifier:@"FeedBackView"];
    [self presentViewController:view animated:YES completion:nil];
    
    Run Code Online (Sandbox Code Playgroud)

但它正在崩溃,我收到以下消息:

由于未捕获的异常“NSInvalidARgumentException”而终止应用程序,原因:“应用程序试图在目标 FutureOrderViewController 上呈现一个 nil 模态视图控制器:0x199a4a30。

objective-c xib ios

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

Swift 中从 Core Data 异步加载图像

我正在构建一个使用核心数据数据库来存储产品数据的应用程序。这些产品显示在UICollectionView. 此集合视图中的每个单元格都显示其包含的产品的基本信息,包括图像。

尽管单元相对较小,但它们显示的原始图像优选地相当大,因为它们还应该能够在更大的图像视图中显示。在我的方法中,图像是直接从核心数据加载的CellForItemAtIndexPath:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CollectionWineCell

        var current: Product!

        //product details are set on labels

        //image is set
        if current.value(forKey: "image") != nil {
            let image = current.value(forKey: "image") as! WineImage
            let loadedImage = UIImage(data: image.image)
            cell.imageview.image = loadedImage
        } else {
            cell.imageview.image = UIImage(named: "ProductPlaceholder.png")
        }

        return cell
    }
Run Code Online (Sandbox Code Playgroud)

当产品集合增加时,滚动会变得更加颠簸,并且许多帧会丢失。这对我来说很有意义,但到目前为止我还没有找到合适的解决方案。在线查看时,有很多文档和框架可用于从 URL(在线或文件路径)异步加载图像,但从 Core Data 执行此操作似乎并不常见。

我已经尝试过使用异步获取请求来做到这一点:

let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName:"ProductImage") …
Run Code Online (Sandbox Code Playgroud)

iphone asynchronous core-data ios uicollectionview

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

您如何在DateFormatters的Date&Time设置中正确支持iOS 12小时/ 24小时覆盖?

如果您的iOS设备设置为使用默认为12小时制的区域(例如美国),并且您具有如下DateFormatter设置:

var dateFormatter: DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateFormat = "h:mm a"

    return formatter
}()
Run Code Online (Sandbox Code Playgroud)

然后,它会输出,如果“24小时时间”开关接通的24小时格式的时间ON的日期和时间设置在iOS中。

如果您的自定义日期格式为“ H:mm”(即24小时),而您仍处于默认的12h区域,则无论24小时开关的打开/关闭状态如何,它都将输出24小时时间。

好的,很好,很简单,我将使用“ h:mm a”,然后用户将根据自己喜欢的格式看到显示的任何时间。但是,如果您将区域更改为默认情况下使用24小时制的区域,则行为会相反!如果您具有“ H:mm”并且24小时制时间开关处于OFF位置,它将更改为12小时制(“ h:mm a”)。

是的,通常可以通过使用时间样式(formatter.timeStyle = .short例如,)而不是使用自定义日期格式来避免这种情况,但是如果您需要自定义日期格式并且要遵守用户的设置,应该怎么办?(例如,如果您需要在字符串中插入一些自定义字符,或者只是想按非标准顺序使用组件)

我想在这里也要吃蛋糕的唯一方法是提前检查用户的喜好(据我所知,您实际上不能直接做)或语言环境的默认设置是(我虽然看不到任何方法来做),然后相应地调整格式…

我做了这个Xcode项目,以更清楚地演示该问题(显然,它必须在设备上运行,因为模拟器上没有24小时切换)。

我知道有各种各样的解决方法,但是如果您要制作的应用程序使用自定义日期/时间格式作为UI并具有来自世界不同地区的用户,那么我不希望Apple期望您做什么。我是否缺少某些东西,或者这是iOS中的缺陷?

注意:此问题专门用于将日期转换为字符串以供显示,因此,我希望尽可能遵守用户的语言环境和其他设置。我知道您可以将语言环境设置为en_POSIX等,但这不能解决问题。我也希望尽可能地做到无缝,并充分利用内置的功能,但这似乎不可能实现,除非您仅将目标用户设置为具有相同默认24小时制的地区…

locale ios regional-settings swift dateformatter

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

分享选定的文字 - iOS 分享扩展

我希望能够共享选定的文本,但我的扩展程序仅在单击共享图标时出现(然后它会用页面标题填充该字段)。我希望我的扩展程序在用户选择文本并单击“共享...”(如下图所示)时出现,然后我希望它用选定的文本填充文本区域。

我希望可以在此处访问扩展程序

共享视图控制器:

override func viewDidLoad() {
        super.viewDidLoad()

        customPopup()

        let extensionItem = extensionContext?.inputItems.first as! NSExtensionItem
        let itemProvider = extensionItem.attachments?.first as! NSItemProvider
        let propertyList = String(kUTTypePropertyList)
        if itemProvider.hasItemConformingToTypeIdentifier(propertyList) {
            itemProvider.loadItem(forTypeIdentifier: propertyList, options: nil, completionHandler: { (item, error) -> Void in
                guard let dictionary = item as? NSDictionary else { return }
                OperationQueue.main.addOperation {
                    if let results = dictionary[NSExtensionJavaScriptPreprocessingResultsKey] as? NSDictionary {
                            print("RESULTS: \n", results)
                    }
                }
            })
        } else {
            print("error")
        }
    }
Run Code Online (Sandbox Code Playgroud)

Action.js(JS 预处理)

var MyPreprocessor = function() {};

MyPreprocessor.prototype = …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift ios8-share-extension share-extension

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

无法在 Xcode 13.1 中查看 StoryBoard 或项目目标

我刚刚升级到 Xcode 13.1,Target 和 Storyboard 都仅显示 XML。

这是我的项目目标文件视图。

// !$*UTF8*$!
{
    archiveVersion = 1;
    classes = {
    };
    objectVersion = 52;
    objects = {

/* Begin PBXBuildFile section */
        FE02B2A625CB5E7D00C2B123 /* SectorTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE02B2A525CB5E7D00C2B123 /* SectorTime.swift */; };
        FE0340BC2169997900803E4C /* TransactionNumberGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE0340BB2169997900803E4C /* TransactionNumberGenerator.swift */; };
        FE036EF7245D116000C9D3A1 /* ArchiveImport.swift in Sources */ = {isa = PBXBuildFile; 
Run Code Online (Sandbox Code Playgroud)

当我右键单击项目导航器中的故事板文件时,菜单中缺少“打开为”选项:

右键单击故事板时缺少“打开方式”选项

有人有主意吗?我已经完成了干净的构建,并重新启动了 Xcode 和我的 Mac。

xcode storyboard

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

Xcode Cloud 构建变量 CI_WORKSPACE 为空

我的 Flutter 应用程序的 Xcode Cloud 构建突然开始失败,而我没有对其进行任何预期的更改。

以下是我的ci_post_clone.sh脚本。

echo "Starting CI script..."

echo $CI_WORKSPACE

# The default execution directory of this script is the ci_scripts directory.
cd $CI_WORKSPACE # change working directory to the root of your cloned repo.

ls

# Install Flutter using git.
git clone https://github.com/flutter/flutter.git --depth 1 -b stable $HOME/flutter
export PATH="$PATH:$HOME/flutter/bin"

# Install Flutter artifacts for iOS (--ios), or macOS (--macos) platforms.
flutter precache --ios

# Install Flutter dependencies.
flutter pub get

# Install CocoaPods …
Run Code Online (Sandbox Code Playgroud)

xcode continuous-integration xcode-cloud

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

CSS攻击Raison d'être

由于我使用CSS构建布局,我总是拒绝为不同的浏览器使用CSS hacks.

在您看来,使用黑客是否真的有好处?

干杯

css

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

"[[UIScreen mainScreen] bounds]"返回null?

当我尝试获取主屏幕的边界时[[UIScreen mainScreen] bounds],它返回null.我也尝试过[[UIScreen applicationFrame] bounds],仍然返回null.

奇怪的是; 如果我这样做NSLog(@"%@", [UIScreen mainScreen]);打印出正确的界限,虽然我不知道如何解析它,如果它甚至可能.

这是相关的代码:

-(void)loadView {
    [super loadView];
    CGRect pagingFrame = [[UIScreen mainScreen] bounds]; 
    NSLog(@"%@", [[UIScreen mainScreen] bounds]); //prints null for me
    NSLog(@"Width of original frame = %d", pagingFrame.size.width); //prints out 0
    pagingFrame.origin.x -= pagingXOrigin;
    pagingFrame.size.width += pagingWidthAdd;
    NSLog(@"Width of adjusted frame = %d", pagingFrame.size.width); //still prints out 0
    pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingFrame];
    pagingScrollView.pagingEnabled = YES;
    pagingScrollView.backgroundColor = [UIColor blackColor];
    pagingScrollView.contentSize = CGSizeMake(pagingFrame.size.width * [self imageCount], pagingFrame.size.height); …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c bounds

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

快速傅立叶变换结果:频率轴刻度?

我使用Apple的Accelerate Framework(在iOS设备上执行)成功实现了采用数组数据并对其运行快速傅里叶变换的代码.

我现在的问题是频率轴的比例是多少?结果在某些频率范围内具有预期的峰值,但我不确定频率应该是多少.Accelerate Framework的FFT函数接收一个数组并吐出一个具有相同(或更多)数据点的数组.是否假设所有这些点在时间上是等间隔的?它不采用采样频率或时间变量作为输入.频率轴的比例(即每个点上的频率增量)只是采样周期除以2*Pi(或类似的东西?)我在文档中找不到很多信息.我一直在网上寻找类似的问题,但没有找到任何东西.

这在某种程度上是一个数学问题,尽管它在很大程度上取决于Accelerate Framework的实现.

谢谢

编辑我在这里问了一个后续问题,但还没有人回答.请看一下!

fft accelerometer ios accelerate-framework

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

没有要编译的体系结构(ARCHS =,VALID_ARCHS = armv7 armv7s)

我正在使用XCode 4.5.2并且有一个项目无法为运行iOS 6.0.1的iPhone编译,尽管其他项目使用相同的设置进行编译,如下图所示.

关于如何解决这个问题的任何想法?

XCode中的体系结构

xcode ios

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