标签: viewcontroller

iPhone:以原始尺寸显示图像

我正在尝试将imageview的帧设置为图像的原始大小,并将其显示在视图的中心.我为此编写了以下代码,但图像仍然出现在整个屏幕上!假设图像大小为320x88,它显示调整大小/拉伸到320x460!我希望它出现在屏幕的中心,所以我将Y坐标设置为(460-88)/ 2,但它不起作用.有谁可以帮我解决这个问题.谢谢.

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:filePath]];

if(imageView.image.size.width == IPHONE4_RES_WIDTH)
    [imageView setFrame: CGRectMake(0, 0, imageView.image.size.width/2, imageView.image.size.height/2)];

UIViewController *viewController = [[[UIViewController alloc] init] autorelease];
viewController.view.backgroundColor = [UIColor blackColor];

NSLog(@"%f : %f",viewController.view.bounds.size.height, imageView.bounds.size.height);

viewController.view = imageView;
viewController.view.contentMode = UIViewContentModeCenter;

[self.navigationController pushViewController:viewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

iphone uiimageview viewcontroller

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

查看插座未设置?(Xcode中)

当我试图运行我正在构建的iPhone应用程序时,构建成功但应用程序在启动图像后崩溃,并给出了一个如下所示的错误:

2011-04-06 20:31:38.562我的应用程序[3438:207] *由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了"GalleryView"笔尖,但视图出口是没有设置.'

我无法弄清楚这里发生了什么..请帮忙!

iphone xcode uiviewcontroller nib viewcontroller

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

不支持多次推送View Controller?

每当我尝试切换这样的视图时,我收到以下错误:

-(void)changeView1ToView4 {
    [self.navigationController1 pushViewController:view4 animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

当应用程序首次加载并且用户直接进入此视图时,不会发生这种情况.只有当我转到其他视图,回到主菜单,然后尝试转到此视图时,才会发生此崩溃.

此外,如果你不确定,我正在使用UINavigationController.此代码也在app委托中,我从具有父视图的视图控制器调用它,所以我使用.reference来调用它:

[self.reference changeView1ToView4];
Run Code Online (Sandbox Code Playgroud)

有没有真正的方法来解决这个问题?

谢谢!

EDIT1:

[self.navigationController1 pushViewController:view4 animated:NO];
[self.navigationController1 pushViewController:view4 animated:YES];

I tried that and got this crash message in the console:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported (<View2: 0x18d540>)'
Run Code Online (Sandbox Code Playgroud)

crash error-handling viewcontroller ios

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

如何在iOS SDK4.2(故事板)中使用分段控件更改viewcontroller?需要示例代码

我找到了这个关于'使用UISegmentedControl切换视图'的示例代码.

http://redartisan.com/blog?page=2

(示例代码链接:http://github.com/crafterm/SegmentedControlRevisited)

但是此示例代码使用的是xib.我想用故事板重新编码(没有xib).是否有类似的示例代码?

view storyboard uisegmentedcontrol viewcontroller

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

禁用导航控制器中View Controller的旋转

首先,这不是重复.我在SO上查看了与此相关的所有问题,但这些问题对我来说都不起作用.希望这只是因为我是iOS开发的新手,但我怀疑在我的情况下这是不可能的.我附加了一个带有视图控制器的图片,我想要禁用旋转.

我已经尝试过:对我要禁用旋转的视图控制器进行子类化,并shouldAutoRotate通过将其设置为NO 来使用该方法.显然这不起作用,因为它是导航控制器,指示其视图控制器是否可以旋转.所以,我UINavigationController在故事板中继承并使用了这个类而不是默认的导航控制器.在这堂课中,我已经设定shouldAutoRotate为NO.它仍然无法正常工作.真的不知道我做错了什么.

当我使用shouldAutoRotate设置为NO的视图控制器类扩展根视图控制器时,它会禁用整个应用程序的旋转.... 这不是我想要的.我只希望为图片中圈出的视图控制器禁用旋转.

在此输入图像描述

提前致谢!

rotation uinavigationcontroller viewcontroller navigationcontroller ios

5
推荐指数
3
解决办法
5578
查看次数

如何在IOS中处理多个远程通知点击

我试图打开基于notification点击的不同视图控制器,但是当push notification它被接收时它会自动在后台运行控制器代码,所以当我通过应用程序图标/通知打开应用程序时notification centre,view controller立即加载,但是当收到多个通知时,它会加载第一个通知控制器无论采用哪种通知.

假设我已收到标题为"晚上","早晨"和"夜晚"的通知,当点击"晚上"通知时它应打开"晚间视图控制器",但当我回去加载时它会加载"夜视控制器" "早晨视图控制器",最后加载"晚视图控制器".在通知发出之前,我在主控制器上,然后我将应用程序移至后台.

当我点击"早晨"时,notification它现在什么都不做.

之前我尝试过使用addObserver,但结果是一样的,所以我转到app delegate.

这是app委托代码

@interface AppDelegate ()

@end


@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [[UIApplication sharedApplication]setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];

    // Override point for customization after application launch.
    // Register for Push Notitications, if running iOS 8 or More

    if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {

        UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert |
                                                        UIUserNotificationTypeBadge |
                                                        UIUserNotificationTypeSound);
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil];
        [application registerUserNotificationSettings:settings];
        [application registerForRemoteNotifications];

    } else {
        // Register …
Run Code Online (Sandbox Code Playgroud)

notifications objective-c viewcontroller ios notificationcenter

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

MAC OS Xcode Swift 2.2 全屏模式

什么 Swift 代码会将应用程序切换到全屏模式?我找到了 IOS 示例代码的参考资料。我正在寻找适用于 MacOS 应用程序的代码。

macos viewcontroller swift2

5
推荐指数
2
解决办法
2558
查看次数

Swift将计算数据传递回上一个视图控制器

我正在创建我的第一个简单的预算应用程序.基本上,我采取一些用户输入,如月收入和储蓄目标.然后他们点击"开始",该应用程序计算诸如他们的每日预算等内容.

我遇到了麻烦.在完成所有计算之后,我会显示"你每天可以花多少钱"(例如每天20美元),然后通过原始屏幕上的原始输入传递segue.

现在,在这个VC(UserInfoVC)中我创建了一个按钮,让他们可以添加今天花了多少钱.因此,当他们点击这个"花钱"按钮时,我打开一个新的VC(AddSubtractMoney),在那里我会提供一个计算器,在那里他们可以输入他们今天花了多少钱(即12美元)并点击提交.

我将他们的输入与每日预算相比较,以获得新的每日预算.

现在,我无法向后传递这个更新的数字,将其显示在标签"dailySpendingLimitLabel"上的前一个VC上.我知道segues不是向后传递数据的最佳方式.

我已经尝试过闭包,但我最终迷失在语法,协议和代理中(这是我的第二个月编码).

有没有一种简单的方法可以将这些数据传回上一个VC并填充前一个显示标签中的数据?

下面是代码.

第一个片段来自UserInfoVC,我在其中显示我最初输入的数据.第二个片段来自AddSubtractMoney我放置计算器的类,并在函数内创建了一个对象"newestUpdate",允许我计算他们在计算器上输入的数字减去旧的每日预算.为了得到一个新的预算,我想向后呈现UserInfoVC.

class UserInfoViewController : ViewController {

var userNamePassedOver : String?
var userDailyBudgetPassedOver : Double = 99.0
var userDailySavingsPassedOver : Double = 778.00
var userMonthlyEarningsPassedOver : Double?
var userDesiredSavingsPassedOver : Double?
var newAmountPassedBack : Double = 0.0


@IBOutlet weak var dailySavingsNumberLabel: UILabel!
@IBOutlet weak var userNameLabel: UILabel!
@IBOutlet weak var dailySpendingLimitLabel: UILabel!



override func viewDidLoad() {
    super.viewDidLoad()

    userNameLabel.text = userNamePassedOver
    dailySpendingLimitLabel.text = String(format: "%.2f", userDailyBudgetPassedOver) …
Run Code Online (Sandbox Code Playgroud)

viewcontroller ios segue swift

5
推荐指数
2
解决办法
8101
查看次数

如何使用Swift 4 Xcode 10在Cocoa中的情节提要中以编程方式设置初始控制器?

介绍:

我想创建一个在首次启动时显示一些“用户指南”的应用程序,我已经完成了检测该应用程序是否首次启动的部分,但是当涉及到设置视图控制器部分时,我无法确定怎么做。

现在的情况:

我已经进行了很多研究,并且看到了很多有关“如何以编程方式快速设置初始视图控制器”这样的主题的Q / A文章,但是基本上所有这些文章都是以ios开发为例的,它们都没有UIWindowUINavigationController(rootViewController:)在OSX开发中匹配。然后我发现它似乎没有这样的事情didFinishLaunchingWithOptionsAppDelegate.swift的文件,相反,这里只有一个applicationDidFinishLaunching(_ aNotification: Notification)

题:

我已经取消选中Is Initial Controller两个View Controller 的选项,并且它们都具有Storyboard ID(标识符?)和它们自己的指定类。

MainPageController

UserGuidePageController

还是我也应该指定并标识我的窗口控制器?因为我不知道该如何使用窗口控制器。

为了在其中设置应用程序的初始视图控制器,我需要做什么AppDelegate

PS这是我的界面视图的图片:

故事板界面

AppDelegate.swift

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

  let storyboard = NSStoryboard(name: NSStoryboard.Name("Main"), bundle: Bundle.main)
  var window = MainWindow().window

  func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) - > Bool {
    return true
  }

  func applicationDidFinishLaunching(_ aNotification: Notification) {
    // Insert code here to initialize your application
    let …
Run Code Online (Sandbox Code Playgroud)

macos cocoa viewcontroller swift4 xcode10

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

如何从 swiftui 视图调用 uikit viewcontroller 方法

我已经到处寻找这个问题的答案,但似乎找不到。如何从 swiftUI 调用 viewController 方法(例如单击按钮)?

我有一个看起来像这样的视图控制器:

import Player

class PlayerViewController: UIViewController {
    var player = Player()
    func play() {
        self.player.play()
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个看起来像这样的包装:

import SwiftUI
import AVFoundation

struct ProjectEditorPlayerBridge: UIViewControllerRepresentable {

    func makeUIViewController(context: Context) -> PlayerViewController {
        let player = PlayerViewController()
        return player
    }
    
    func updateUIViewController(_ uiViewController: PlayerViewController, context: Context) {
    }
    
    typealias UIViewControllerType = PlayerViewController
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在 swiftUI 中使用按钮操作并调用 viewControllerplay方法一次。我已经看到建议在包装器上设置状态/绑定并调用 updateUIViewController 中的方法的答案,但是当我这样做时,我看到它被调用多次,而不仅仅是一次。

viewcontroller ios swiftui

5
推荐指数
2
解决办法
5889
查看次数