在iOS6中,我注意到了新的Container View,但我不太确定如何从包含视图访问它的控制器.
场景:
我想从容纳容器视图的视图控制器访问Alert视图控制器中的标签.
它们之间有一个区别,我能用它吗?
我知道之前已经问过这个问题,但答案是矛盾的,我很困惑,所以请不要激怒我.
我希望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) 我想弹出导航堆栈上的第三个视图回到第一个视图.
我知道如何一次弹出一个视图:
[self.navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
但我怎么一次做两个呢?
谢谢...
我想在所有视图中显示我的应用中的状态栏,但只有一个.我已经尝试修改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来修复波动性.上帝知道一切如何运作但事实确实如此.
我知道有很多关于这个主题的信息,但我找不到任何最新的信息.我看到这样的主题与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到最佳答案.
我使用[[UIScreen mainScreen] setBrightness:](在sdk 5.0中)更改我的应用程序中的系统背景灯.
以下步骤适用于我的应用:
激活应用程序,将系统亮度设置为默认值,然后另存为sysBright.
使用我的应用更改亮度,更改亮度,然后另存为appBright.
使用主页按钮或锁定按钮ResignActive应用程序,将亮度设置为sysBright(步骤1值,系统默认亮度).
再次激活应用.然后它将重复上述步骤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)
我错过了什么吗?
我有一个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的最佳解决方案:
在iOS8上,此功能内置于SDK中
示例场景:如果用户启用了javascript,我想隐藏子导航菜单,以便在导航层次结构中进一步向上点击导航链接时显示该菜单.如果启用了javascript,则Modernizr会在html标记中添加一个类'js',因此我可以将其用于检测.
在SASS我可以这样做:
div.subnav{
display: block;
html.js & {
display: none;
}
}
Run Code Online (Sandbox Code Playgroud)
这可以用LESS完成吗?我可以从其他规则中定位父级吗?
试图重命名一堆文件.
我可以使用当前目录中的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) 我试图在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)