如何防止TTPostController的模态视图在出错时被解雇?

时间:2011-05-24 01:52:54

标签: iphone objective-c three20

对于那些使用three20的TTPostController的人,如何在发送请求之前和之后处理用户错误?即,如果用户试图发布空白评论,我希望能够提醒他们并保持视图处于活动状态,以便他们可以修复它。

我遇到的问题是在出现问题后让模态视图保持打开状态。我可以提醒用户,但一旦他们点击OK,模态就会被解雇。我以为我可以使用TTPostControllerDelegate:willPostText委托来实现这一点,但这似乎没有用,或者我不明白它是如何工作的。

我在做什么:

/**
 * The user has posted text and an animation is about to show the text return to its origin.
 *
 * @return whether to dismiss the controller or wait for the user to call dismiss.
 */
- (BOOL)postController:(TTPostController*)postController willPostText:(NSString*)text {
    if ([text length] == 0) {
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:nil 
                                                         message:@"Your message is blank" 
                                                        delegate:self 
                                               cancelButtonTitle:@"OK" 
                                               otherButtonTitles:nil ];
        [alert show];
        [alert release];    

        return false;
    }        
    return true;
}

如果我尝试发布空白评论,我会收到警告让我知道,但是一旦按下OK,模态视图就会被解雇。

我有什么遗漏或没有正确理解吗?

编辑:我还应该注意,我尝试使用alertView的didDismissWithButtonIndex:方法尝试阻止视图卸载,但我没有成功。

1 个答案:

答案 0 :(得分:0)

前几天我遇到了这个。如果您将nil而不是self作为委托传递给:

UIAlertView initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles 

当用户触摸“OK”时,TTPostController不再被解除。

- (BOOL)postController:(TTPostController*)postController willPostText:(NSString*)text {
    if ([text length] == 0) {
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:nil 
                                                         message:@"Your message is blank" 
                                                        delegate:nil 
                                               cancelButtonTitle:@"OK" 
                                               otherButtonTitles:nil ];
        [alert show];
        [alert release];    

        return false;
    }        
    return true;
}