【问题标题】:How to prevent TTPostController's modal view from being dismissed upon errors?如何防止 TTPostController 的模态视图因错误而被关闭?
【发布时间】:2011-05-24 01:52:53
【问题描述】:

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

我遇到的问题是在出现问题后让模态视图保持打开状态。我可以提醒用户,但是一旦他们单击“确定”,模式就会被关闭。我以为我可以使用 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: 方法尝试阻止视图卸载,但没有成功。

【问题讨论】:

    标签: iphone objective-c three20


    【解决方案1】:

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

    UIAlertView initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles 
    

    当用户点击“确定”时,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;
    }
    

    【讨论】:

    • 谢谢,process255!一旦我发现了这一点,我就应该发布后续内容,这是在我发布问题后不久。将此标记为已接受的答案。
    猜你喜欢
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2023-03-23
    • 2019-10-30
    • 2013-12-15
    • 2019-03-10
    相关资源
    最近更新 更多