Это может помочь ответить на ваш вопрос: я понял это только сейчас:
Я думаю, что использовал Мэтта Джеммелла и его исходный код , хотя, возможно, я использовал Бена Готтлиба, я не совсем помню. Хотя уверен, что это Мэтт.
Однако я также создал скрытое подпредставление, которое содержит фактическое текстовое поле для твита, кнопку твита и кнопку возврата, чтобы пользователь мог снова скрыть вид.
Итак, подведем итог, у меня есть кнопка, которая показывает изначально скрытое подпредставление, и пока он делает это, он аутентифицирует пользователя. В этом подпредставлении есть кнопка твита, используемая для публикации твитов. Вот код, который я нашел, работал для меня. Сейчас я провел только минимальное тестирование, но я надеюсь, что вам, ребята, достаточно уйти самостоятельно и забрать его отсюда.
-(IBAction)shareTwit:(id)sender { //This shows the tweet view and authorises the user and engine
tweetView.hidden = NO;
if (!_engine) {
_engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self];
_engine.consumerKey = kOAuthConsumerKey;
_engine.consumerSecret = kOAuthConsumerSecret;
}
if (![_engine isAuthorized]) {
UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self];
if (controller) {
[self presentModalViewController: controller animated: YES];
}
else {
[_engine sendUpdate: [NSString stringWithFormat: @"Already Updated. %@", [NSDate date]]];
}
}
}
-(IBAction)updateTwitter:(id)sender { //This button sends the tweet to Twitter.
if ([_engine isAuthorized]) {
[_engine sendUpdate:tweetTextField.text];
[tweetTextField resignFirstResponder];
confirmation.text = @"Tweet sent successfully."; //This is an optional UILabel, if you would like the user to know if the tweet has been sent
// Currently, I haven't created a method where the user is told the sending failed.
}
else {
UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self];
if (controller) {
[self presentModalViewController: controller animated: YES];
}
else {
[_engine sendUpdate: [NSString stringWithFormat: @"Already Updated. %@", [NSDate date]]];
}
}
}
Обратите внимание, я не использовал viewDidLoad
, главным образом потому, что я не согласен с ним. Я хотел, чтобы пользователь сначала нажал кнопку shareTwit
, чтобы активировать аутентификацию. Затем в запущенном представлении они могут написать свой твит. Я надеюсь, что это поможет вам!