未加载iOS UITableView内容 - 未使用属性访问结果

时间:2012-06-14 18:12:35

标签: ios twitter uitableview

我正在尝试从Twitter加载包含内容的表格。该表位于UIView中并在drawRect()中创建...但我不断收到警告:

Property access result unused - getters should not be used for side effects

每个。

我桌上没有任何内容。

这是我的.h文件:

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#import <Twitter/Twitter.h>

#import "ColorController.h"

@interface TwitterController : UIView <UITableViewDelegate, UITableViewDataSource> { 

UIButton* btnCloseView; 
UITableView* tblTweets;
UIImageView* imgTwitterIcon;

ColorController* colorManager;

NSMutableArray* tweetsArray;

NSString* twitterID;

}

@property (nonatomic, retain) NSString* twitterID;

- (void) getTweets; 

- (void) closeWin;

@end

和我的.m

#import "TwitterController.h"

@implementation TwitterController

@synthesize twitterID;

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

    colorManager = [ColorController new];
}
return self;
}


- (void)drawRect:(CGRect)rect {

imgTwitterIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imgTwitterBird"]];
CGRect twitterIconFrame = [imgTwitterIcon frame];
twitterIconFrame.origin.x = 50.0;
twitterIconFrame.origin.y = 20.0;

tblTweets = [[UITableView alloc] initWithFrame:CGRectMake(50.0, 25.0, 220.0, 500.0)];
tblTweets.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
tblTweets.separatorColor = [colorManager setColor:176.0:196.0:222.0];
tblTweets.layer.borderWidth = 1.0;
tblTweets.rowHeight = 20.0;
tblTweets.scrollEnabled = YES;
tblTweets.delegate.self;
tblTweets.dataSource.self;

UIImage* imgCloseButton = [UIImage imageNamed:@"btnCloseWindow.png"];
CGSize imageSize = imgCloseButton.size;
btnCloseView = [[UIButton alloc] initWithFrame: CGRectMake(220.0, 550.0, imageSize.width, imageSize.height)];
[btnCloseView setImage:[UIImage imageNamed:@"btnCloseWindow.png"] forState:UIControlStateNormal];
[btnCloseView addTarget:self action:@selector(closeWin:) forControlEvents:UIControlEventTouchUpInside];


[self getTweets];
[self addSubview:tblTweets];
[self addSubview:imgTwitterIcon];
[self addSubview:btnCloseView];

}


- (void) getTweets { 

//array to hold tweets
tweetsArray = [[NSMutableArray alloc] init];

///set up a NSURL to the twitter API
NSURL* twitterAPI = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=%@&count=10", twitterID]];

//get last 10 tweets (max is 20)
TWRequest *twitterRequest = [[TWRequest alloc] initWithURL:twitterAPI 
            parameters:nil requestMethod:TWRequestMethodGET];

// Notice this is a block, it is the handler to process the response
[twitterRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
    if ([urlResponse statusCode] == 200)  {

        // The response from Twitter is in JSON format
        // Move the response into a dictionary and print
        NSError *error;        
        NSDictionary *tweetsDict = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error];

        for(NSDictionary* thisTweetDict in tweetsDict) { 

            [tweetsArray addObject:[thisTweetDict objectForKey:@"text"]];
        }

        [tblTweets reloadData];
    }
    else
        NSLog(@"Twitter error, HTTP response: %i", [urlResponse statusCode]);
}];


}

#pragma mark表管理

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [tweetsArray count];
NSLog(@"%i", [tweetsArray count]);
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [tweetsArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"tableCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.textLabel.textColor = [UIColor colorWithRed:66.0/255.0 green:66.0/255.0 blue:66.0/255.0 alpha:1];
cell.textLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size: 13.0];
cell.textLabel.text = [tweetsArray objectAtIndex:indexPath.row];
CGRect cellFrame = [cell frame];
cellFrame.size.height = 25.0;

return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

NSString* thisTweet = [tweetsArray objectAtIndex:indexPath.row];
}

#pragma mark Close Window

- (void) closeWin { 

NSMutableDictionary* userData = [[NSMutableDictionary alloc] init];

[userData setObject:@"closeTwitter" forKey:@"theEvent"];

[[NSNotificationCenter defaultCenter] postNotificationName:@"theMessenger" object:self userInfo: userData];

}

@end

1 个答案:

答案 0 :(得分:0)

drawRect用于使用绘图函数在此视图中绘制内容 您应该将视图添加内容移至layoutSubviews

而不是- (void)drawRect:(CGRect)rect使用- (void)layoutSubviews

这可能会或可能不会解决您的问题,但仍然是正确的方法