我有一个相当重要的概念问题,许多人已经问过,但搜索找不到一个现成的明确答案.
我的应用程序很简单:几行TableViewCells填充了来自解析的JSON提要的数据.单击一个单元格时,该单元格的信息将传递给SecondViewController并显示.JSON提要也存储在.plist中,如果Internet不可用,则从.plist填充TableViewCell.
这一切都很有效.
但是,我需要的最后一件事是在我的FirstViewController顶部的刷新按钮来刷新JSON提要,并且表中的所有单元格都包含来自新变量的新数据.但是,我遇到了实现这个的问题:
我原来的JSON调用和填充单元格的变量位于ViewDidLoad方法中.加载视图时,这些变量将"设置"并且不会刷新.此外,我可以将JSON调用和变量移动到viewWillLoad中 - 每次单击一个单元格后刷新表格,然后单击"返回"到firstViewController - 这将成功更新JSON和单元格,但它确实会影响回到MainViewController时,速度并使视图控制器"暂停",这使得调用我的原始JSON并在viewWillLoad中设置我的变量是一个不可行的选项.
我在ViewDidLoad中创建了一个重新加载按钮,它链接到IBAction方法"refresh":
在ViewDidLoad中以Programitically方式创建按钮:
// Reload issues button
UIBarButtonItem *button = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:self
action:@selector(refresh:)];
self.navigationItem.rightBarButtonItem = button;
[button release];
Run Code Online (Sandbox Code Playgroud)
与之相关的行动方法:
- (IBAction)refresh:(id)sender {
myRawJson = [[NSString alloc] initWithContentsOfURL:[NSURL
URLWithString:@"http://www.yoursite.com/json.JSON"]
encoding:NSUTF8StringEncoding
error:nil];
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSDictionary * myParsedJson = [parser objectWithString:myRawJson error:NULL];
// New updated dictionary built from refreshed JSON
allLetterContents = [myParsedJson objectForKey:@"nodes"];
// Log the new refreshed JSON
NSLog(@"You clicked refresh. Your new JSON is %@", myRawJson); …Run Code Online (Sandbox Code Playgroud) objective-c uitableview nsnotifications uiviewcontroller ios
基本上,我希望我的图形从x轴开始,并在两秒内增长到实际数据值.这可能是一件简单的事情,但我似乎无法让它发挥作用.
我正在追加一个区域元素,其中d =""属性是由函数(区域)构建的,我不知道在哪里添加转换.
首先,我想在区域函数中执行此操作,但这失败了.当添加区域元素但没有成功时,我也试图这样做.
这是我的代码:
// Create the area element for each object - a function that will be passed to "path"
var area = d3.svg.area()
.x(function(d) { return x(d.year); })
.y0(height)
//.y1(height)
//.transition()
//.duration(2000)
.y1(function(d) { return y(d.average); });
// build the container SVG element
var svg = d3.select("#co2").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
svg.append("path")
// pull in data to the …Run Code Online (Sandbox Code Playgroud) 我的图表完全按预期工作,除了我的parseDate函数不想在x轴上给我正确的日期.我确信这很简单.
目前我正在添加d3.v2.min.js,没有任何额外的帮助库 - 我还需要其他东西才能让d3.time.format()工作吗?
在不解析日期的情况下,我的数据返回x轴:
.960 .965 .970 .975
Run Code Online (Sandbox Code Playgroud)
而不是
1960 1965 1970 1975
Run Code Online (Sandbox Code Playgroud)
JSON的结构如下:
[{"year":1959,"average":315.97},
{"year":1960,"average":316.91},
{"year":1961,"average":317.64},
...etc
{"year":2011,"average":391.57}]
Run Code Online (Sandbox Code Playgroud)
带有//注释部分的代码是问题:
<script>
var margin = {top: 20, right: 20, bottom: 30, left: 50},
width = 920 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
Run Code Online (Sandbox Code Playgroud)
//下面的parseDate不起作用
var parseDate = d3.time.format("%Y").parse;
var x = d3.time.scale()
.range([0, width]);
var y = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
// data taking …Run Code Online (Sandbox Code Playgroud)