小编Ada*_*ite的帖子

从父iOS访问容器视图控制器

在iOS6中,我注意到了新的Container View,但我不太确定如何从包含视图访问它的控制器.

场景:

例

我想从容纳容器视图的视图控制器访问Alert视图控制器中的标签.

它们之间有一个区别,我能用它吗?

objective-c uiviewcontroller ios uicontainerview swift

198
推荐指数
6
解决办法
9万
查看次数

正确的加载UIView子类的Nib的方法

我知道之前已经问过这个问题,但答案是矛盾的,我很困惑,所以请不要激怒我.

我希望UIView在我的应用程序中有一个可重用的子类.我想用nib文件描述接口.

现在让我们说它是一个加载指示器视图,其中包含一个活动指示器.我希望在某个事件上实例化此视图并激活到视图控制器的视图.我可以用编程方式描述视图的界面没有问题,以编程方式创建元素并在init方法中设置它们的框架等.

我怎么能用笔尖做到这一点?维护界面构建器中给出的大小而不必设置框架.

我已经设法这样做,但我确定它是错的(它只是一个带有选择器的视图):

 - (id)initWithDataSource:(NSDictionary *)dataSource {
        self = [super init];
        if (self){
            self = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", [self class]] owner:self options:nil] objectAtIndex:0];
            self.pickerViewData = dataSource;
            [self configurePickerView];
        }
        return self;
    }
Run Code Online (Sandbox Code Playgroud)

但是我覆盖了自己,当我实例化它时:

FSASelectView *selectView = [[FSASelectView alloc] initWithDataSource:selectViewDictionary];
    selectView.delegate = self;

    selectView.frame = CGRectMake(0, self.view.bottom + 50, [FSASelectView width], [FSASelectView height]);
Run Code Online (Sandbox Code Playgroud)

我必须手动设置框架而不是从IB中拾取它.

编辑:我想在视图控制器中创建此自定义视图,并有权控制视图的元素.我不想要一个新的视图控制器.

谢谢

编辑:我不知道这是不是最好的做法,我确定不是,但这就是我做的方式:

FSASelectView *selectView = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@",[FSASelectView class]] owner:self options:nil] objectAtIndex:0];
    selectView.delegate = self;
    [selectView configurePickerViewWithData:ds];
    selectView.frame = CGRectMake(0, …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c xib uiview ios

98
推荐指数
5
解决办法
10万
查看次数

如何从导航控制器一次弹出两个视图?

我想弹出导航堆栈上的第三个视图回到第一个视图.

我知道如何一次弹出一个视图:

[self.navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

但我怎么一次做两个呢?

谢谢...

iphone uinavigationcontroller ios

85
推荐指数
9
解决办法
6万
查看次数

在一个视图上隐藏iPhone上的状态栏?

我想在所有视图中显示我的应用中的状态栏,但只有一个.我已经尝试修改plist中的"状态栏最初隐藏",我试过:

[[UIApplication sharedApplication] setStatusBarHidden:YES];
Run Code Online (Sandbox Code Playgroud)

这隐藏了酒吧,但留下了一个丑陋的蓝色盒子,状态栏就在那里(这不是我观点的一部分,那里没有蓝色).

我还尝试在Xcode 4.2的"界面构建器"位中更改布局需要全屏和状态栏设置.

有什么建议?

编辑 - 解决方案:

我通过包括:

    -(void)viewWillDisappear:(BOOL)animated{


    [[UIApplication sharedApplication] setStatusBarHidden:YES];

}


-(void)viewDidAppear:(BOOL)animated{


    [[UIApplication sharedApplication] setStatusBarHidden:NO];

}
Run Code Online (Sandbox Code Playgroud)

在我想要状态栏的每一页上.

它仍然看起来不稳定和垃圾,因为标签栏出现并在每次切换视图时重新出现.但是我已经受够了,现在大约5个小时就解决了这个愚蠢的问题,所以这将是必须的.

第二次编辑 -

通过在viewWillAppears中包含setStatusBarHidden = NO来修复波动性.上帝知道一切如何运作但事实确实如此.

iphone status objective-c statusbar ios

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

Rails api和本机移动应用程序身份验证

我知道有很多关于这个主题的信息,但我找不到任何最新的信息.我看到这样的主题与rails和android身份验证相关但我看到 TokenAuthenticatable现在已经从设计中删除了.

我的问题很简单:有没有一种很好的方法来使用Rails 4从本机Android和iPhone应用程序验证用户?有没有人知道提供解决方案的好教程或文章?

Adam Waite添加赏金:

我刚刚在这个问题上开了一个500赏金,因为我找不到在任何地方从iOS应用程序到Rails API验证用户的正确做法.这是我考虑做的事情,但不知道它是否安全?!:

我们假设我们有一个User记录.用户已注册已User在数据库中使用email列和password_digest列创建记录的帐户.

当用户登录时,我希望该用户在移动应用程序上保持身份验证,直到明确注销.

我想我们将需要基于令牌的身份验证.我可能会在创建时创建一个ApiKey记录,User并将其保存为User记录中的关联.

当用户登录/注册时,响应将包含一个API令牌(类似于SecureRandom.hex),它将保存在iOS Keychain中,并与所有后续请求一起使用,通过将其传递到标头并使用以下内容进行验证来验证用户:

before_filter :restrict_access

private

def restrict_access
authenticate_or_request_with_http_token do |token, options|
  ApiKey.exists?(access_token: token)
end
Run Code Online (Sandbox Code Playgroud)

这样安全吗?我是否应该使用每个请求刷新令牌并将其包含在响应中?

我还有其他选择吗?Facebook,Twitter和Pinterest的喜欢做什么?

我知道OAuth2.0,但这不是用于授予外部应用程序吗?

有没有一个宝石可以管理这些?

对不起,这里完全不确定.

500到最佳答案.

android ruby-on-rails devise ios oauth-2.0

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

applicationWillResignActive和setBrightness无法正常工作?

我使用[[UIScreen mainScreen] setBrightness:](在sdk 5.0中)更改我的应用程序中的系统背景灯.

以下步骤适用于我的应用:

  1. 激活应用程序,将系统亮度设置为默认值,然后另存为sysBright.

  2. 使用我的应用更改亮度,更改亮度,然后另存为appBright.

  3. 使用主页按钮或锁定按钮ResignActive应用程序,将亮度设置为sysBright(步骤1值,系统默认亮度).

  4. 再次激活应用.然后它将重复上述步骤1至3.

第3步有问题,当我使用锁定按钮取消激活应用程序时,函数applicationWillResignActive运行良好,它可以恢复亮度值(sysBright).

但是当我按下主页按钮时,它不再起作用了.亮度仍然是我在我的应用程序中更改的值.(appBright)

有没有人对它有任何想法?谢谢你的帮助〜

这是代码:

float appBright,sysBright;

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    sysBright = [[UIScreen mainScreen] brightness];
    [[NSUserDefaults standardUserDefaults] setFloat:sysBright forKey:@"sysBright"];

    [[UIScreen mainScreen] setBrightness:appBright];
}

//doesn't work when i ResignActive with the home button
- (void)applicationWillResignActive:(UIApplication *)application
{        
    [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
    [[UIScreen mainScreen] setBrightness:sysBright];        
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

iphone delegates brightness ios

27
推荐指数
2
解决办法
5131
查看次数

基于内容的动态UITableView单元格高度

我有一个UITableView填充了自定义单元格(继承自UITableViewCell),每个单元格包含一个UIWebView根据它的内容自动调整大小.这就是问题,如何UITableView根据内容(变量webView)更改单元格的高度.

解决方案必须是动态的,因为用于填充的HTML UIWebViews是从不断变化的Feed中解析的.

我有一种感觉,我需要使用UITableView委托方法,heightForRowAtIndexPath但从它的定义:

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ;//This needs to be variable
}
Run Code Online (Sandbox Code Playgroud)

我无法访问单元格或其内容.我可以更改单元格的高度cellForRowAtIndexPath吗?

任何帮助都会很棒.谢谢.

注意

两年多前我问过这个问题.通过自动布局的介绍,可以找到iOS7的最佳解决方案:

http://t.co/PdUywcTjhu

在iOS8上,此功能内置于SDK中

iphone objective-c uitableview ios

24
推荐指数
4
解决办法
6万
查看次数

检查父级是否使用LESS进行课程

示例场景:如果用户启用了javascript,我想隐藏子导航菜单,以便在导航层次结构中进一步向上点击导航链接时显示该菜单.如果启用了javascript,则Modernizr会在html标记中添加一个类'js',因此我可以将其用于检测.

在SASS我可以这样做:

div.subnav{

   display: block;

   html.js & {
      display: none;
   }

}
Run Code Online (Sandbox Code Playgroud)

这可以用LESS完成吗?我可以从其他规则中定位父级吗?

css sass less

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

以递归方式重命名文件Mac OSX

试图重命名一堆文件.

我可以使用当前目录中的bar重命名foo的任何实例:

ls . | awk '{print("mv "$1" "$1)}' | sed 's/foo/bar/2' | /bin/sh
Run Code Online (Sandbox Code Playgroud)

我可以添加什么来使其递归?

编辑/我的解决方案

我不知道/理解这个shell类型的东西,所以我用一些(非常脏)Ruby做了:

5.times do
  Dir["**/*"].each do |f|
    file_name = File.absolute_path f
    should_rename = file_name.include? "yolo"
    new_file_name = file_name.gsub("yolo", "#{@project_name}")
    File.rename(f, new_file_name) if (should_rename and File.exists? f)
  end
end
Run Code Online (Sandbox Code Playgroud)

shell awk sed sh

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

使用node.js中的"网页"Phantom模块

我试图在node.js进程中包装PhantomJS脚本.幻像脚本从命令行上提供的参数中获取URL并输出pdf(非常类似于pahntom安装中包含的rasterize.js示例).

我的幻像脚本工作正常,只是我的雇主想要一个节点脚本,如果可能的话.没问题,我可以使用node-phantom节点模块来包装它.

但现在我遇到了绊脚石,我的幻像脚本有:

var page = require('webpage').create();
Run Code Online (Sandbox Code Playgroud)

因此,node.js正在尝试查找名为"网页"的模块,"网页"模块内置于幻像安装中,因此节点无法找到它.据我所知,没有名为'网页'的npm模块.

'网页'使用如下:

page.open(address, function (status) {

    if (status !== 'success') {

        // --- Error opening the webpage ---
        console.log('Unable to load the address!');

    } else {

        // --- Keep Looping Until Render Completes ---
        window.setTimeout(function () {
            page.render(output);
            phantom.exit();
        }, 200);
    }
});
Run Code Online (Sandbox Code Playgroud)

其中address是命令行中指定的url,输出是另一个参数,即文件的名称和类型.

谁能帮我吗?这是一个非常抽象的,所以如果我诚实的话,我并没有期待太多,但值得一试.

谢谢.

编辑 - 约2小时后

我现在有这个抛出PDF:

var phanty = require('node-phantom');

var system = require('system');

phanty.create(function(err,phantom) {

    //var page = require('webpage').create();

    var address;
    var output;
    var size;

    if …
Run Code Online (Sandbox Code Playgroud)

javascript rendering node.js phantomjs

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