小编pab*_*ros的帖子

IOS - 如何使用swift以编程方式进行segue

我正在创建一个使用Facebook SDK对用户进行身份验证的应用.我试图在一个单独的类中巩固facebook逻辑.这是代码(为简单起见而剥离):

import Foundation

class FBManager {
    class func fbSessionStateChane(fbSession:FBSession!, fbSessionState:FBSessionState, error:NSError?){
        //... handling all session states
        FBRequestConnection.startForMeWithCompletionHandler { (conn: FBRequestConnection!, result: AnyObject!, error: NSError!) -> Void in

            println("Logged in user: \n\(result)");

            let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
            let loggedInView: UserViewController = storyboard.instantiateViewControllerWithIdentifier("loggedInView") as UserViewController

            loggedInView.result = result;

            //todo: segue to the next view???
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用上面的类方法来检查会话状态更改,它工作正常.

问:获得用户数据后,如何从此自定义类中转到下一个视图?

编辑:只是为了清楚,我在故事板上有一个带标识符的segue,我正试图找到一种方法来从一个不是视图控制器的类执行一个segue

iphone facebook ios segue swift

178
推荐指数
6
解决办法
21万
查看次数

分组UITableView底部有20px的额外填充

在iOS 6中,分组表视图似乎在底部有额外的填充(iOS 5没有它),但我找不到任何表明这是正确/预期行为的文档.

这也会影响示例项目,例如示例中的SimpleTableView项目TableViewSuite.我想我必须将样式AppDelegate改为'分组',并将SDK更新到iOS 6,但没有对该项目进行其他更改.

调查显示,10px保留了页眉和页脚视图,以及一些20px无法解释的视图.没有实际的页眉或页脚视图(tableHeaderView并且tableFooterView正在nil执行和返回nil,例如viewForFooterInSection什么都不做).我在tableView上找不到任何'20'值,虽然我可能错过了一些东西.

为页脚添加零大小视图不会做任何事情,但添加1px方形视图会导致额外的填充消失.例如:

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0,0,1,1)];
Run Code Online (Sandbox Code Playgroud)

它确实占据了1px高度,所以现在是底部填充11px,但这远不如20那么明显.现在设置sectionFooterHeight为0将仅1px产生底部空间.

我的问题是:什么?我怎样才能完全删除它?这不是任务关键任务,但它非常奇怪,不可取,而且据我所知,它没有记录.

请注意 - 从Apple开发论坛复制过去的问题.但我有完全相同的问题,我也不明白如何解决它.

objective-c uitableview ios

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

Simple App Delegate方法显示UIAlertController(在Swift中)

在obj-C中,当使用与我的应用程序关联的文件或链接轻触另一个iOS应用程序(邮件附件,Web链接)时.然后我会在openURL上捕获它,didFinishLaunchingWithOptions并显示一个UIAlertView确认用户想要导入数据.现在这UIAlertView是折旧的我试图做同样的事情,但不是真的确定最好的方法来做到这一点?

当我的应用程序从另一个应用程序接收数据时,我无法显示简单警报.此代码在Objective-C中运行良好,具有UIAlertView:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    if (url)
    {
        self.URLString = [url absoluteString];
        NSString *message = @"Received a data exchange request. Would you like to import it?";
        importAlert = [[UIAlertView alloc] initWithTitle:@"Data Received" message:message delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
        [importAlert show];
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试切换到UIAlertViewControllerSwift时,我似乎找不到一种简单的方法来显示消息:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
    let URLString: String = url.absoluteString!
    let message: …
Run Code Online (Sandbox Code Playgroud)

objective-c uialertview ios swift

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

使UITableView不可滚动并调整高度以容纳所有单元格

我正在嵌入UITableView另一个内部UIScrollView.我只想要UIScrollView滚动,而不是UITableView,所以我想禁用滚动UITableView,以及扩展contentHeightUITableView一次容纳所有动态.

我该怎么做呢?

uitableview ios

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

更改iOS 12中MFMailComposeViewController中导航栏的标题颜色不起作用

如何更改UINavigationBarin MFMailComposeViewControllerin 的标题颜色iOS 12

这就是我在做的事情:

import MessageUI

extension MFMailComposeViewController {
    open override func viewDidLoad() {
        super.viewDidLoad()
        navigationBar.isTranslucent = false
        navigationBar.isOpaque = false
        navigationBar.barTintColor = .white
        navigationBar.tintColor = .white
        navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    }
}
Run Code Online (Sandbox Code Playgroud)

在iOS 10中工作:

ios 10

在iOS 11中工作:

ios 11

在iOS 12中不起作用:

ios 12

iphone uinavigationbar ios swift mfmailcomposeviewcontroller

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

overAiding shouldAutorotate不在Swift 3中工作

我试图阻止轮换UIViewController,我无法做到这一点.

我正在做这样的事情:

open override var shouldAutorotate: Bool {
    get {
        return false
    }
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    get {
        return .portrait
    }
}
Run Code Online (Sandbox Code Playgroud)

UIViewControler剧照旋转.UIViewController位于以模态方式打开的UINavigationController中.

我从这里看了很多问题,没有一个答案适合我.

在Swift 2中,我曾经覆盖shouldAutorotate但在Swift 3中,该功能不再存在.

我怎么能在Swift 3中做到这一点,我曾经在Swift 2中做过什么?

autorotate ios swift

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

Swift完整日期,以毫秒为单位

有没有办法用毫秒打印完整的日期?

例如,我这样做:

print("\(NSDate())")
Run Code Online (Sandbox Code Playgroud)

但我只是得到这个:

2016-05-09 22:07:19 +0000
Run Code Online (Sandbox Code Playgroud)

如何在完整日期获得毫秒数?

ios swift

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

iOS 11开始以编程方式在导航栏上使用大标题进行刷新

在iOS 10中,我曾经以UIRefreshControl编程方式开始刷新(以编程方式显示刷新控件),如下所示:

self.tableView.setContentOffset(CGPoint(x: 0, y: - self.refreshControl.bounds.height), animated: false)
self.refreshControl.beginRefreshing()
Run Code Online (Sandbox Code Playgroud)

但是现在使用iOS 11代码不起作用,它只会弄乱大小UINavigationController并且UIRefreshControl不会出现.

如何从iOS 11 开始以编程方式UIRefreshControl(以编程方式显示刷新控件)开始刷新prefersLargeTitles

ios swift ios11

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

将NSArray转换为NSMutableArray Swift

我正在尝试将其转换self.assets NSArrayNSMutableArray并将其添加到picker.selectedAssets其中NSMutableArray.这段代码在swift中会如何?

Objective-C代码

picker.selectedAssets = [NSMutableArray arrayWithArray:self.assets];
Run Code Online (Sandbox Code Playgroud)

objective-c swift

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

使用RxSwift观察Swift 3中的数组

RxSwift在Swift 2中创建一个可观察的数组,我用它来做:

[1, 2, 3].toObservable().subscribeNext { print($0) }
Run Code Online (Sandbox Code Playgroud)

但是在Swift 3中,它不再起作用了,我收到了这个错误:

类型'[Int]'的值没有成员'toObservable'

如何RxSwift从swift数组创建一个可观察的数组?

ios swift rx-swift reactivex

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