如果未选择任何收件人,则显示警报

时间:2015-08-07 11:53:37

标签: ios objective-c uitableview parse-platform uialertview

我有一个页面,我们选择要发送图像的收件人(谁是朋友)。但如果没有选择收件人,我们仍然可以发送邮件。我想要它,如果没有选择收件人,我们可以显示UIAlertView。对我来说,当我尝试显示警报时它无法正常工作,请参阅下面的代码。

.h
@property (nonatomic, strong) NSArray *friends;
@property (nonatomic, strong) PFRelation *friendsRelation;
@property (nonatomic, strong) NSMutableArray *recipients;

- (IBAction)send:(id)sender;

.m
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.recipients = [[NSMutableArray alloc] init];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    self.friendsRelation = [[PFUser currentUser] objectForKey:@"friendsRelation"];

    PFQuery *query = [self.friendsRelation query];
    [query orderByAscending:@"username"];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (error) {
            NSLog(@"Error %@ %@", error, [error userInfo]);
        }
        else {
            self.friends = objects;
            [self.tableView reloadData];
        }
    }];
//display camera modally etc......
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    PFUser *user = [self.friends objectAtIndex:indexPath.row];
    cell.textLabel.text = user.username;

    if ([self.recipients containsObject:user.objectId]) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    return cell;
}

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.tableView deselectRowAtIndexPath:indexPath animated:NO];

    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    PFUser *user = [self.friends objectAtIndex:indexPath.row];

    if (cell.accessoryType == UITableViewCellAccessoryNone) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        [self.recipients addObject:user.objectId];
    }
    else {
        cell.accessoryType = UITableViewCellAccessoryNone;
        [self.recipients removeObject:user.objectId];
    }

    NSLog(@"%@", self.recipients);
}

这是我尝试显示警报的部分

- (IBAction)send:(id)sender {

    if (!self.recipients) {  
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Select some friends" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

        [alertView show];

    } else {
        [self uploadMessage];
  //we upload the message in method to parse.com
    }
}

它似乎没有出现由于某种原因所以我们可以向任何人发送消息。如何显示警报视图?

2 个答案:

答案 0 :(得分:2)

试试这个。收件人的检查对象等于或不等。

- (IBAction)send:(id)sender {

    if ([self.recipients count]==0) {  
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Select some friends" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

        [alertView show];

    } else {
        [self uploadMessage];
  //we upload the message in method to parse.com
           [self.tabBarController setSelectedIndex:1]; 
    }
}

答案 1 :(得分:1)

您的代码存在的问题是您正在检查::

if(!self.recipients)

这里self.recipients将始终给出真值,因为它将查找此对象的内存地址,您已在viewDidLoad方法中为其分配了该内容。

您必须检查场景中数组的计数。